Java进程间通信和线程间通信?

标签 java multithreading

Java 上下文中的线程和进程有什么区别? Java中进程间通信和线程间通信是如何实现的? 请指出一些现实生活中的例子。

最佳答案

根本区别在于线程存在于相同的地址空间中,而进程存在于不同的地址空间中。这意味着线程间通信是关于传递对对象的引用和更改共享对象,而进程是关于传递对象的序列化副本。

在实践中,Java 线程间通信可以实现为对共享对象的普通 Java 方法调用,并引入适当的同步。或者,您可以使用新的并发类来隐藏一些本质上(并且容易出错)的同步问题.

相比之下,Java 进程间通信基于将状态、请求等转换为字节序列的最低级别,这些字节序列可以作为消息或流发送到另一个 Java 进程。您可以自己完成这项工作,也可以使用各种不同复杂程度的“中间件”技术来抽象出实现细节。可能使用的技术包括 Java 对象序列化、XML、JSON、RMI、CORBA、SOAP/“网络服务”、消息队列等。

在实际层面上,线程间通信比进程间通信快很多数量级,并且让您可以更简单地做很多事情。但缺点是一切都必须存在于同一个 JVM 中,因此存在潜在的可扩展性问题、安全性问题、健壮性问题等。

关于Java进程间通信和线程间通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2527847/

相关文章:

java - 如何检查值是否正确?

java - 向 void 方法添加返回参数会破坏现有功能吗?

java - 如何使用 Java 8 Streams 从对象列表中提取字符串值并创建新列表?

java - 从上到下打印整数的 ArrayList 并将每个元素作为字符串返回

c# - 线程 - 如何通过 UI 交互终止工作/后台线程

java - JVM - Java 虚拟机损坏

c# - 来自 XNA GamerService 的无效跨线程访问

vb.net - VB.NET中的Debug.Writeline是否停止线程执行?

java - 实现线程接口(interface)

c - 限制 pthreads 中并发线程执行的数量