java等待通知机制在不同进程之间

时间:2013-11-04 18:30:37

标签: java multithreading

我有一个关于Java中的wait-notify机制的非常基本的问题。我知道我们可以通过使用它来同步两个不同的线程,但是,这些线程是否需要在同一个进程中运行?如果有两个线程在两个不同的进程中运行怎么办?等待通知方法仍然有用吗?

3 个答案:

答案 0 :(得分:2)

Wait-notify对于在不同进程中运行的线程不起作用。

假设进程A分配了0x1000 - 0x2000的内存,并且正在锁定0x1200上进行同步

进程B分配0x3000 - 0x4000的内存。它无法访问0x1200,可以吗......

此时您的最佳同步方法将是

  • 让进程通过本地TCP / IP套接字相互通信
  • 阅读过程&写锁文件

答案 1 :(得分:1)

当您启动JVM进程时,您创建的每个线程和您使用的内存都属于该JVM实例,而不是其他任何内容。

启动另一个JVM实例时,这两个实例不共享内存资源。因此,只有属于该JVM实例的线程才能访问wait / notify(或任何其他对象),而不能访问其他进程。

答案 2 :(得分:1)

不,不同的进程启动不同的JVM,因此线程不在那里进行通信。该机制适用于在同一JVM上运行的线程。

wait()释放对象监视器并进入无限睡眠状态,而其他一些线程继续执行。 notify()唤醒在同一对象监视器上调用wait()的第一个线程。