簡體   English   中英

通知僅限於同步構造

[英]Notify restricted to synchronized construct

我的確意識到這個話題已經在很多地方討論過了。 但是所有人都談論它在多線程環境中的用法。

在下面的示例中,為什么notify()應該被synchronized包圍? 當使用該關鍵字時,它是徒勞的。 但是為什么不使用異常java.lang.IllegalMonitorStateException呢?

public class HelloWorld {
   public static void main(String[] args) {
      ABC c = new ABC();
      c.put(0);
   }
}
class ABC {
   public synchronized void put(int value) {    // why synchronized now!
      System.out.println("Put: " + value);
      notify();
   }
}

您應該使用synchronized是因為鎖是可re-entrant ,這意味着同一線程可以多次獲取它。 換句話說,如果您的線程已經持有對象的鎖,則不必等待它自己。

暫無
暫無

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

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