Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不同进程间的java等待通知机制_Java_Multithreading - Fatal编程技术网

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

不同进程间的java等待通知机制,java,multithreading,Java,Multithreading,关于Java中的等待通知机制,我有一个非常基本的问题。我知道我们可以通过使用它来同步两个不同的线程,但是,这些线程是否需要在同一进程中运行?如果有两个线程在两个不同的进程中运行呢?等待通知方法是否仍然有效?启动JVM进程时,创建的每个线程和使用的内存都属于该JVM实例,而不是其他任何线程 当您启动另一个JVM实例时,这两个实例不共享内存资源。因此,wait/notify(或任何其他对象)只能对属于该JVM实例的线程而不是其他进程进行访问。wait notify不适用于在不同进程中运行的线程 假设

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

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


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

wait notify不适用于在不同进程中运行的线程

假设处理分配的内存
0x1000
-
0x2000
,并且正在锁上同步
0x1200

进程B分配
0x3000
-
0x4000
的内存。它不可能访问
0x1200
,是不是

此时,您最好的同步方法是

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

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

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

    +1供参考:对于Java来说,抵制谈论内存地址的诱惑很重要,因为所有对象都是可重新定位的。你应该使用“参考”这个词而不是记忆。下面所有的答案都是正确的。我不得不接受一个,所以我接受了。