[英]java monitor - queues
我有一個 java 監視器,但我需要一些解釋:
class Test
{
private int data;
private boolean full = false;
public synchronized int receive() {
while (!full) wait();
full = false;
return data;
}
public synchronized void send(int value) {
data = value;
full = true;
notify();
}
}
我知道,監視器內只能有一個正在運行的進程,所以我不明白以下幾點:
在您發布的代碼的情況下,由於方法不是靜態方法,因此監視器與對象相關聯,而不是與類相關聯:類的每個實例都有一個這樣的監視器。
此類的每個實例都有一個等待線程隊列。 隊列適用於這兩種同步方法,因此如果一個線程正在執行其中一種方法,則其他線程無法執行其中任何一種方法。
Java 中的每個對象和每個類都有自己的內置監視器。 對象監視器適用於非靜態方法,類監視器適用於靜態方法。 監視器是語言定義的一部分,不必顯式聲明或定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.