wait(),notify(),notifyAll()用來操作線程為什么定義在Object類中?


  1. 這些方法存在於同步中;
  2. 使用這些方法必須標識同步所屬的鎖;
  3. 鎖可以是任意對象,所以任意對象調用方法一定定義在Object類中。

 

     Condition是在java 1.5中才出現的,它用來替代傳統的Object的wait()、notify()實現線程間的協作,相比使用Object的wait()、notify(),使用Condition1的await()、signal()這種方式實現線程間協作更加安全和高效。因此通常來說比較推薦使用Condition,在阻塞隊列那一篇博文中就講述到了,阻塞隊列實際上是使用了Condition來模擬線程間協作。

  • Condition是個接口,基本的方法就是await()和signal()方法;
  • Condition依賴於Lock接口,生成一個Condition的基本代碼是lock.newCondition() 
  •  調用Condition的await()和signal()方法,都必須在lock保護之內,就是說必須在lock.lock()和lock.unlock之間才可以使用

     Conditon中的await()對應Object的wait();

     Condition中的signal()對應Object的notify();

     Condition中的signalAll()對應Object的notifyAll();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM