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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對多線程的一些迷惑,求解...

對多線程的一些迷惑,求解...

qq_v路過幸福_0 2018-03-05 16:53:43
現在有個疑惑,比如現在有段代碼if(a>100){....}這段代碼運行在多線程環境下, 就是現在有多個線程來調用比如線程2拿到CPU執行權的時候這個a的值還是103呢,所以滿足if條件,但是剛判斷完滿足條件,還沒來得及執行里邊的代碼呢,這時候線程1搶走了CPU執行權,線程1把a的值改成90了,改完后,線程2又重新搶回了CPU執行權,我想問這個時候線程2還會再重新 if 判斷一下a的值嗎?還是同樣的問題,如果我把if改成while(),那么線程2回過頭來還會判斷一下括號里的條件嗎?還是同樣的問題,我把a變量用了volatile修飾后,會重新判斷嗎如果加上volatile后,不會重新判斷。那volatile不是保證立即可見性嗎?加上volatile就是為了讓線程1的修改對線程2立即可見,就是為了立即告訴線程2現在a已經是90了已經不滿足條件了, 不能再運行了,咱們想要的結果是這個。那如果加上后不會重新判斷的話,那就相當于加上volatile對我來說運行結果還是錯的,還是沒有達到預期的效果,那volatile有什么用呢
查看完整描述

1 回答

?
carolcoral

TA貢獻41條經驗 獲得超9個贊


多線程你可以這樣來思考:


一棵蘋果樹上有很多的蘋果(線程),假設有5000個蘋果(最大支持5000線程),一個人來一次只能拿走一個蘋果(每次只能調用一個線程),同時又10個人來拿蘋果(同時操作10個線程),10個人拿蘋果的時間和方式等對蘋果樹相互之間沒有影響(線程隔離,線程之間是并列關系,相互之間不影響——線程鎖),突然主管要求他們10個人要同時拿蘋果(同步線程)

查看完整回答
1 反對 回復 2018-03-05
  • 1 回答
  • 0 關注
  • 759 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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