1.如果線程調用了對象的wait方法,那么線程便會處于該對象的等待池中,等待池中的線程不會去競爭該對象的鎖;
2.當有線程調用了notifyAll方法(喚醒所有wait線程)或notify方法(只隨機喚醒一個wait線程),被喚醒的線程便會進入該對象的鎖池中,所持中的線程回去競爭該對象鎖,也就是說,調用了notify后只要一個線程會由等待池進入鎖池,而notifyAll會將該對象等待池內的所有線程移動到鎖池中,等待鎖競爭;
3.所謂喚醒線程,就是將線程由等待池移動鎖池,notifyAll調用后,會將全部線程由等待池移動到鎖池,然后參與鎖池競爭,競爭成功則繼續(xù)執(zhí)行,如果不成功則留在鎖池等待鎖被釋放后再次參與競爭。notify只會喚醒一個線程。
notify和notifyAll區(qū)別
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關閱讀更多精彩內容
- 想知道notify和notifyall的區(qū)別必須先了解兩個概念 鎖池EntryList 等待池WaitSet 鎖池...
- 前言 今天簡單的講一講線程中sleep(),join(),yield(),wait(),notify(),noti...
- 在了解這兩個方法之前,先了解兩個概念鎖池(EntryList)和等待池(WaitSet) 鎖池 假設線程A已經(jīng)擁有...
- 根據(jù)以上關于鎖池和等待池的概念描述我們可以知道 1.如果有多個線程想要某個已經(jīng)被占用的鎖的時候,因為想要獲取鎖,就...
- [toc] 還記得前面用ArrayList實現(xiàn)阻塞隊列的文章:《什么?面試官讓我用ArrayList實現(xiàn)一個阻塞隊...