java併發編程多個線程爲什麼執行的先後順序不一樣!

jvm爲了使得處理器內部的運算單元能儘量被充分利用,

處理器可能會對輸入代碼進行亂序執行(Out-Of-Order Execution)優化,處理器會在計算之後將亂序執行的結果重組,保證該結果與順序執行的結果是一致的,但並不保證程序中各個語句計算的先後順序與輸入代碼中的順序一致,因此,如果存在一個計算任務依賴另外一個計算任務的中間結果,那麼其順序性並不能靠代碼的先後順序來保證

摘自:《深入理解Java虛擬機:JVM高級特性與最佳實踐》 — 周志明
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章