Java进程间通信和线程间通信?
Java上下文中的线程和进程之间有什么区别?用Java如何实现进程间通信和线程间通信?请给我指出一些现实生活中的例子。
回答:
根本的区别是线程位于相同的地址空间中,而进程位于不同的地址空间中。这意味着线程间通信是关于传递对对象的引用以及更改共享对象,而进程是关于传递对象的序列化副本。
在实践中,Java线程间通信可以实现为对共享对象进行简单的Java方法调用,并引入适当的同步。或者,您可以使用新的并发类来隐藏一些棘手的(容易出错的)同步问题。
相比之下,Java进程间通信基于将状态,请求等转换为字节序列的最低级别,这些字节序列可以作为消息或作为流发送到另一个Java进程。您可以自己完成这项工作,也可以使用各种复杂程度不同的“中间件”技术来抽象实现细节。可以使用的技术包括Java对象序列化,XML,JSON,RMI,CORBA,SOAP
/“ Web服务”,消息查询等等。
在实践上,线程间通信比进程间通信快许多个数量级,并且使您可以更轻松地完成许多事情。但是缺点是,所有内容都必须存在于同一JVM中,因此存在潜在的可伸缩性问题,安全性问题,健壮性问题等等。
以上是 Java进程间通信和线程间通信? 的全部内容, 来源链接: utcz.com/qa/400196.html