課程
/后端開發(fā)
/Java
/深入淺出Java多線程
代碼如圖?
把需要同步的代碼 ?封裝到方法中 ?
兩個線程為什么會打印相同的結(jié)果
2017-06-14
源自:深入淺出Java多線程 5-1
正在回答
解釋:當線程1將piao()方法調(diào)入棧中執(zhí)行時,線程2也將piao()方法調(diào)入棧中執(zhí)行,但是由于piao()方法被鎖所以線程2處于等待,然而此時線程2已經(jīng)讀取了內(nèi)存中的 x 的值,所以當線程1執(zhí)行完成雖然修改了 x 的值,但是由于線程2已經(jīng)讀取了 x 的值,所以修改后的 x 的值并沒有被線程2讀取。
注意:1、可以給x添加volatile修飾符,這樣線程就能讀取正確的值
? ? ? ? ? 2、一般情況下對于并發(fā)共享的類最好不要擁有狀態(tài),容易出現(xiàn)并發(fā)問題
慕粉9344391 提問者
慕UI1804229
qq_船到橋頭自然沉_2 回復 慕UI1804229
舉報
帶你一起深入淺出多線程,掌握基礎(chǔ),展望進階路線
2 回答synchronized修飾同步方法
2 回答同步,鎖問題
2 回答關(guān)于兩種方法創(chuàng)建線程的不同
1 回答關(guān)于yield方法
1 回答關(guān)于線程的join()方法
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2017-06-17
解釋:當線程1將piao()方法調(diào)入棧中執(zhí)行時,線程2也將piao()方法調(diào)入棧中執(zhí)行,但是由于piao()方法被鎖所以線程2處于等待,然而此時線程2已經(jīng)讀取了內(nèi)存中的 x 的值,所以當線程1執(zhí)行完成雖然修改了 x 的值,但是由于線程2已經(jīng)讀取了 x 的值,所以修改后的 x 的值并沒有被線程2讀取。
注意:1、可以給x添加volatile修飾符,這樣線程就能讀取正確的值
? ? ? ? ? 2、一般情況下對于并發(fā)共享的類最好不要擁有狀態(tài),容易出現(xiàn)并發(fā)問題