當前位置:編程學習大全網 - 網站源碼 - java中Lock的默認Condition問題。

java中Lock的默認Condition問題。

Lock 替代了synchronized 方法和語句的使用,Condition 替代了Object 監視器方法(wait、notify和notifyAll)的使用。Lock的原理其實和synchronized是壹樣的。

java的每個對象都有壹個監視器,只能被同壹線程擁有(即同壹線程可重入),壹旦被壹個線程獲取,那其它線程只能等待。synchronized(obj)意思就是獲得obj的監視器,對應於monitorenter,代碼塊結束時自動釋放,相當於monitorexit。

只有獲得了對象的監視器,才能執行監視器方法,也就是wait、notify或notifyAll。也就是只有synchronized(this)後才能this.wait或this.notify,不能獲得壹個對象的監視器而執行另壹個對象的監視器方法。

在condictin上await後必須有線程調用condition.signal()。妳可以在妳的線程上提供2個方法:

class RunA implements Runable {

public void wait1() {

lock.lock();

try {

condition.await();

}finally{

lock.unlock();

}

}

public void continue1() {

lock.lock();

try {

condition.signal();

} finally {

lock.unlock();

}

}

}

本線程調用wait1,另壹線程調用continue1通知繼續,這跟在Object上的wait與notify是壹回事

  • 上一篇:泰拉瑞亞聖騎士之盾怎麽獲得 聖騎士之盾作用和制作詳解
  • 下一篇:華東師範大學學生健康打卡系統判斷是否在校。
  • copyright 2024編程學習大全網