1. 程式人生 > >java併發程式設計多個執行緒為什麼執行的先後順序不一樣!

java併發程式設計多個執行緒為什麼執行的先後順序不一樣!

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

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

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