面試題 final關鍵字

2022-04-02 00:23:51 字數 274 閱讀 4746

對於final域,編譯器和處理器要遵守兩個重排序規則:

1.在建構函式內對乙個final域的寫入,與隨後把這個被構造物件的引用賦值給乙個引用變數,這兩個操作之間不能重排序。

原因:編譯器會在final域的寫之後,發現 final 變數的賦值也會通過 putfield 指令來完成,插入乙個storestore屏障

2.初次讀乙個包含final域的物件的引用,與隨後初次讀這個final域,這兩個操作之間不能重排序。

編譯器會在讀final域操作的前面插入乙個loadload屏障

面試題 final關鍵字

對於final域,編譯器和處理器要遵守兩個重排序規則 1.在建構函式內對乙個final域的寫入,與隨後把這個被構造物件的引用賦值給乙個引用變數,這兩個操作之間不能重排序。原因 編譯器會在final域的寫之後,發現 final 變數的賦值也會通過 putfield 指令來完成,插入乙個storesto...

面試題 volatile,static關鍵字

暫存器變數 它是被設計用來修飾被不同執行緒訪問和修改的變數 如果沒有volatile,基本上會導致這樣的結果 要麼無法編寫多執行緒程式,要麼編譯器失去大量優化的機會。volatile的作用 作為指令關鍵字,確保本條指令不會因編譯器的優化而省略,且要求每次直接讀值.簡單地說就是防止編譯器對 進行優化....

static關鍵字 final 關鍵字

特點 隨著類的載入而載入,也就是說靜態會隨著類的消失而消失,說明他的生命週期最長 靜態變數 static 關鍵字修飾成員變數,使用 類名.變數名 的形式來訪問,也可以使用 例項物件.變數名 的形式來訪問。靜態方法 static 關鍵字修飾成員函式,靜態方法可以使用 類名.方法名 的形式來訪問,也可以...