Condition总结-await和signal的总结
生活随笔
收集整理的這篇文章主要介紹了
Condition总结-await和signal的总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我把前面的整個分解的圖再通過一張整體的結構圖來表述,線程awaitThread先通過lock.lock()方法獲取鎖成功后調用了condition.await方法進入等待隊列,而另一個線程signalThread通過lock.lock()方法獲取鎖成功后調用了condition.signal或者signalAll方法,使得線程awaitThread能夠有機會移入到同步隊列中,當其他線程釋放lock后使得線程awaitThread能夠有機會獲取lock,從而使得線程awaitThread能夠從await方法中退出執行后續操作。如果awaitThread獲取lock失敗會直接進入到同步隊列。
?阻塞:await()方法中,在線程釋放鎖資源之后,如果節點不在AQS等待隊列,則阻塞當前線程,如果在等待隊列,則自旋等待嘗試獲取鎖
釋放:signal()后,節點會從condition隊列移動到AQS
等待隊列,則進入正常鎖的獲取流程
了解完Lock以及Condition之后,意味著我們對于J.U.C里面的鎖機制以及線程通信機制有了一個全面和深入的了解,接下來我們來看看其他比較常用的一些工具
?
總結
以上是生活随笔為你收集整理的Condition总结-await和signal的总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: reportInterruptAfter
- 下一篇: Condition总结-CountDow