線程通信
簡介:線程間通信是指多個(gè)線程間等待與喚醒的一個(gè)交互舶斧;
? ? ? ? ? ?1.JDK5之前傳統(tǒng)線程的通信方式卧波,使用Object的wait與notify;
? ? ? ? ? ?2.JDK5后更高效的是使用Condition;
生產(chǎn)者/消費(fèi)者問題
注意:1.在wait方法說明中咙边,也推薦使用while,因?yàn)樵谀承┨囟ǖ那闆r下棠众,線程有可能被假喚醒荞怒,使用while會循環(huán)檢測更穩(wěn)妥;
? ? ? ? ? ?2.wait和notify方法必須工作于synchronized內(nèi)部察纯,且這兩個(gè)方法只能由鎖對象來調(diào)用帕棉;
生產(chǎn)消費(fèi)案例
使用Lock與Condition
condition簡單使用
Condition的強(qiáng)大之處在于它可以為多個(gè)線程間建立不同的Condition
好處:放完雞蛋必定是提醒取雞蛋cdGet,取完雞蛋必定是提醒放雞蛋cdPut
????????(如果只用一個(gè)cd饼记,放完雞蛋香伴,可能又喚醒放雞蛋,再次阻塞)
多個(gè)condition使用