關(guān)于wait()和notify()用法
當(dāng)使用了wait()方法后,線程停止等待,那wait后面的語句還會(huì)被執(zhí)行嗎?如果沒有被執(zhí)行,那notify();也沒被執(zhí)行,那怎么通知其他線程呢?
為什么不能把notify()放進(jìn)while循環(huán)里面?放在外面不就是代表?xiàng)l件不滿足不執(zhí)行wait(),也要執(zhí)行notify()?
當(dāng)使用了wait()方法后,線程停止等待,那wait后面的語句還會(huì)被執(zhí)行嗎?如果沒有被執(zhí)行,那notify();也沒被執(zhí)行,那怎么通知其他線程呢?
為什么不能把notify()放進(jìn)while循環(huán)里面?放在外面不就是代表?xiàng)l件不滿足不執(zhí)行wait(),也要執(zhí)行notify()?
2016-04-07
舉報(bào)
2016-05-02
我得到最后的答案是因?yàn)槊看味紙?zhí)行一次notify;所以即使他wait()了釋放了鎖,由于他上一次執(zhí)行了 notify()了,所以就已經(jīng)叫醒了另外的線程,注意這個(gè)notify和wait()不是在同一次過程中的。
2016-05-01
你想的是一條線程,而現(xiàn)在是多條線程,也就是說很多線程都依次執(zhí)行這段代碼
2016-04-07
你這邏輯。。。。。 ?我理解的是這樣的 ?當(dāng)前線程調(diào)用的wait()線程就處于阻塞狀態(tài),后面的語句當(dāng)然不會(huì)執(zhí)行,并且,線程調(diào)用wait()之后是會(huì)釋放掉鎖資源,然后自己才進(jìn)入小黑屋等待的,所以并不影響后面線程訪問關(guān)鍵數(shù)據(jù);
while 的作用是將滿足while條件的線程關(guān)進(jìn)小黑屋啊。。。所以 ? ?只有在不滿足while的情況下,線程得以成功讀寫完關(guān)鍵數(shù)據(jù),然后才會(huì)調(diào)用notidy()喚醒小黑屋里的其他等待的線程