簡體   English   中英

java等待通知機制在不同進程之間

[英]java wait-notify mechanism among different processes

我有一個關於Java中的wait-notify機制的基本問題。 我知道我們可以通過使用它來同步兩個不同的線程,但是,這些線程是否需要在同一個進程中運行? 如果有兩個線程在兩個不同的進程中運行怎么辦? 等待通知方法仍然有效嗎?

Wait-notify對於在不同進程中運行的線程不起作用。

假設進程A分配的內存為0x1000 - 0x2000 ,並且正在鎖定0x1200上進行同步

進程B分配0x3000 - 0x4000內存。 它不可能訪問0x1200 ,可以......

那時你最好的同步方法就是

  • 使進程通過本地TCP / IP套接字相互通信
  • 讓進程讀寫鎖文件

當您啟動JVM進程時,您創建的每個線程和您使用的內存都屬於該JVM實例,而不屬於其他任何一個。

啟動另一個JVM實例時,這兩個實例不共享內存資源。 因此,只有屬於該JVM實例的線程才能訪問wait / notify(或任何其他對象),而不能訪問其他進程。

不,不同的進程啟動不同的JVM,因此線程不在那里進行通信。 該機制適用於在同一JVM上運行的線程。

wait()釋放對象監視器並進入無限睡眠狀態,而其他一些線程繼續執行。 notify()喚醒在同一對象監視器上調用wait()的第一個線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM