對于instance = new Someobject(),并不是一個原子操作,這個程序分成了3步:
1,給 instance 分配記憶體
2,呼叫 Someobject的建構式來初始化成員變數
3,將instance物件指向分配的記憶體空間
在JVM的即時編譯器中,存在指令重排序。在上面的例子中,2操作依賴1操作,但3操作并不依賴2操作,也就是說上面的第二步和第三步的順序是不能保證的,最終的執行順序可能是1-2-3 也可能是1-3-2。那么不就會導致在普通情況下得到的instance 就可能是一個沒有初始化的物件參考?
不涉及多執行緒,就是單執行緒的最普通的instance = new Someobject()陳述句,會產生這種問題嗎?還是我理解錯了?真心求解
uj5u.com熱心網友回復:
對單執行緒沒有影響,不會有任何問題uj5u.com熱心網友回復:
沒問題
uj5u.com熱心網友回復:
List<> list = null;list = new arraylist<>();你可以先創建一個物件給它空值,然后你在哪用在哪里new
uj5u.com熱心網友回復:
單執行緒的場景下,并沒有原子操作這一說.....uj5u.com熱心網友回復:
事務操作不算是原子操作嗎轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/233178.html
標籤:Java SE
上一篇:小白請教:My97DatePicker 年份選擇問題
下一篇:idea單元測驗不能用
