線程A阻塞過程如下:
檢查條件不滿足
將自身添加到等待隊(duì)列,并將當(dāng)前狀態(tài)設(shè)置為阻塞
再次檢查條件
? ? ? ?仍不滿足拓哟,調(diào)度
釋放資源
五個(gè)部分想许,線程能否真正阻塞取決于是否會(huì)進(jìn)入第四部,且線程狀態(tài)非RUNNING断序。
線程B可能在任何時(shí)刻進(jìn)行如下動(dòng)作
觸發(fā)條件滿足
喚醒所有等待條件滿足的隊(duì)列上的線程
分三種場(chǎng)景分析:
1
線程B在A第一次檢查條件后使條件滿足流纹。
難道A第二次檢查一定滿足,不會(huì)調(diào)度违诗。
2
線程B在A設(shè)置等待隊(duì)列后將條件設(shè)置為滿足漱凝,分析同上不會(huì)調(diào)度。
3
線程B在A第二次檢查后設(shè)置條件诸迟。此時(shí)A一定會(huì)調(diào)度茸炒。但此時(shí)A已經(jīng)加入到等待隊(duì)列中,因此B在喚醒等待隊(duì)列時(shí)一定會(huì)將A的狀態(tài)改為RUNNING阵苇,則A一定會(huì)被喚醒壁公。