亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于同步方法的問題

代碼如圖?

把需要同步的代碼 ?封裝到方法中 ?

兩個線程為什么會打印相同的結果



http://img1.sycdn.imooc.com//5940fdd600016bd314190929.jpg

正在回答

1 回答

解釋:當線程1將piao()方法調入棧中執行時,線程2也將piao()方法調入棧中執行,但是由于piao()方法被鎖所以線程2處于等待,然而此時線程2已經讀取了內存中的 x 的值,所以當線程1執行完成雖然修改了 x 的值,但是由于線程2已經讀取了 x 的值,所以修改后的 x 的值并沒有被線程2讀取。

注意:1、可以給x添加volatile修飾符,這樣線程就能讀取正確的值

? ? ? ? ? 2、一般情況下對于并發共享的類最好不要擁有狀態,容易出現并發問題

1 回復 有任何疑惑可以回復我~
#1

慕粉9344391 提問者

非常感謝!
2017-06-18 回復 有任何疑惑可以回復我~
#2

慕UI1804229

添加了volatile還是沒用啊
2018-06-21 回復 有任何疑惑可以回復我~
#3

qq_船到橋頭自然沉_2 回復 慕UI1804229

不是這個加volatile的問題,是在Test1的run方法中,不管是線程t1還是線程t2都是進去后都new了一個x,此時線程t1中的和線程t2的x是不同的,所以輸出會出現重復的計數
2018-06-22 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
深入淺出Java多線程
  • 參與學習       186065    人
  • 解答問題       502    個

帶你一起深入淺出多線程,掌握基礎,展望進階路線

進入課程

關于同步方法的問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號