Java 上下文中的线程和进程有什么区别? Java中进程间通信和线程间通信是如何实现的? 请指出一些现实生活中的例子。
最佳答案
根本区别在于线程存在于相同的地址空间中,而进程存在于不同的地址空间中。这意味着线程间通信是关于传递对对象的引用和更改共享对象,而进程是关于传递对象的序列化副本。
在实践中,Java 线程间通信可以实现为对共享对象的普通 Java 方法调用,并引入适当的同步。或者,您可以使用新的并发类来隐藏一些本质上(并且容易出错)的同步问题.
相比之下,Java 进程间通信基于将状态、请求等转换为字节序列的最低级别,这些字节序列可以作为消息或流发送到另一个 Java 进程。您可以自己完成这项工作,也可以使用各种不同复杂程度的“中间件”技术来抽象出实现细节。可能使用的技术包括 Java 对象序列化、XML、JSON、RMI、CORBA、SOAP/“网络服务”、消息队列等。
在实际层面上,线程间通信比进程间通信快很多数量级,并且让您可以更简单地做很多事情。但缺点是一切都必须存在于同一个 JVM 中,因此存在潜在的可扩展性问题、安全性问题、健壮性问题等。
关于Java进程间通信和线程间通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2527847/