不同进程间的java等待通知机制
关于Java中的等待通知机制,我有一个非常基本的问题。我知道我们可以通过使用它来同步两个不同的线程,但是,这些线程是否需要在同一进程中运行?如果有两个线程在两个不同的进程中运行呢?等待通知方法是否仍然有效?启动JVM进程时,创建的每个线程和使用的内存都属于该JVM实例,而不是其他任何线程不同进程间的java等待通知机制,java,multithreading,Java,Multithreading,关于Java中的等待通知机制,我有一个非常基本的问题。我知道我们可以通过使用它来同步两个不同的线程,但是,这些线程是否需要在同一进程中运行?如果有两个线程在两个不同的进程中运行呢?等待通知方法是否仍然有效?启动JVM进程时,创建的每个线程和使用的内存都属于该JVM实例,而不是其他任何线程 当您启动另一个JVM实例时,这两个实例不共享内存资源。因此,wait/notify(或任何其他对象)只能对属于该JVM实例的线程而不是其他进程进行访问。wait notify不适用于在不同进程中运行的线程 假设
当您启动另一个JVM实例时,这两个实例不共享内存资源。因此,wait/notify(或任何其他对象)只能对属于该JVM实例的线程而不是其他进程进行访问。wait notify不适用于在不同进程中运行的线程 假设处理分配的内存
0x1000
-0x2000
,并且正在锁上同步0x1200
进程B分配0x3000
-0x4000
的内存。它不可能访问0x1200
,是不是
此时,您最好的同步方法是
- 让进程通过本地TCP/IP套接字相互通信
- 让进程读写锁文件
不,不同的进程启动不同的JVM,因此线程不在那里通信。该机制适用于在同一JVM上运行的线程
wait()
释放对象监视器并进入无限睡眠,同时其他线程继续执行。
notify()
唤醒在同一对象监视器上调用wait()
的第一个线程 +1供参考:对于Java来说,抵制谈论内存地址的诱惑很重要,因为所有对象都是可重新定位的。你应该使用“参考”这个词而不是记忆。下面所有的答案都是正确的。我不得不接受一个,所以我接受了。