課程
/后端開發(fā)
/Java
/深入淺出Java多線程
鎖在while循環(huán)外面 如果一直循環(huán) 鎖不被釋放 其他線程怎么可以拿到鎖呢
2017-07-06
源自:深入淺出Java多線程 4-3
正在回答
當(dāng)while判斷滿足時(shí),進(jìn)入wait,將當(dāng)前線程暫停并且釋放資源等待后面的線程,當(dāng)下個(gè)線程進(jìn)入的時(shí)候,判斷條件不滿足時(shí),執(zhí)行notifyall,喚醒所有線程,然后如果等待中的線程獲得執(zhí)行資格時(shí),當(dāng)前線程將會(huì)繼續(xù)執(zhí)行while。不知道這樣理解對(duì)不對(duì)。
聲明:解釋轉(zhuǎn)自 sxian_wang 的回答
先明白兩個(gè)概念:鎖池和等待池。synchronized是鎖池,wait、notify、notifyAll是等待池。等待池的對(duì)象是不會(huì)競(jìng)爭(zhēng)鎖的,當(dāng)notifyAll后,等待池中的線程會(huì)被喚醒進(jìn)入到該線程的鎖池中重新競(jìng)爭(zhēng)對(duì)象鎖,重新獲得鎖后的對(duì)象會(huì)從wait后繼續(xù)執(zhí)行代碼,其他對(duì)象會(huì)被阻塞,而不是wait。被阻塞的對(duì)象會(huì)等待下一次被喚醒(notify、notifyAll)。另外,notify不是線程安全的,notifyAll才是。
舉報(bào)
帶你一起深入淺出多線程,掌握基礎(chǔ),展望進(jìn)階路線
2 回答同步,鎖問題
2 回答求解這段代碼的意思?
1 回答加入Thread.yield()這段代碼的意義何在?
1 回答能詳細(xì)解釋下這段代碼嗎?
1 回答線程交互方式 :互斥與同步是什么?沒聽懂
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2017-09-03
當(dāng)while判斷滿足時(shí),進(jìn)入wait,將當(dāng)前線程暫停并且釋放資源等待后面的線程,當(dāng)下個(gè)線程進(jìn)入的時(shí)候,判斷條件不滿足時(shí),執(zhí)行notifyall,喚醒所有線程,然后如果等待中的線程獲得執(zhí)行資格時(shí),當(dāng)前線程將會(huì)繼續(xù)執(zhí)行while。不知道這樣理解對(duì)不對(duì)。
2017-07-09
聲明:解釋轉(zhuǎn)自 sxian_wang 的回答
先明白兩個(gè)概念:鎖池和等待池。synchronized是鎖池,wait、notify、notifyAll是等待池。等待池的對(duì)象是不會(huì)競(jìng)爭(zhēng)鎖的,當(dāng)notifyAll后,等待池中的線程會(huì)被喚醒進(jìn)入到該線程的鎖池中重新競(jìng)爭(zhēng)對(duì)象鎖,重新獲得鎖后的對(duì)象會(huì)從wait后繼續(xù)執(zhí)行代碼,其他對(duì)象會(huì)被阻塞,而不是wait。被阻塞的對(duì)象會(huì)等待下一次被喚醒(notify、notifyAll)。另外,notify不是線程安全的,notifyAll才是。