1. 程式人生 > >java代碼亂序問題

java代碼亂序問題

images 編譯器 blog 指令重排 flag 並發 順序執行 mage 原因

技術分享

java兩個線程互相訪問的時候並不能按照你的思路運行,因為執行語句可能有前後快慢之分,比如a=1和flag=true。下面線程B訪問的時候 這兩個賦值語句不一定按順序執行

產生這種原因是因為指令重排序造成的。這種重排只會出現在不影響串行的結構下進行指令的優化(去掉等待的氣泡,這是一種編譯器的自動優化避免過多等待)

技術分享

此問題在java並發線程實戰中也有說明

java代碼亂序問題