java中final關(guān)鍵字用法 Java面試官該如何快速判斷程序員的能力?
Java面試官該如何快速判斷程序員的能力?以我為例。第一個問題是Java中的main方法,所有關(guān)鍵字的含義,以及何時再次使用main。似乎是基于面試。知道你有多深volatile是為了防止指令重排序以
Java面試官該如何快速判斷程序員的能力?
以我為例。第一個問題是Java中的main方法,所有關(guān)鍵字的含義,以及何時再次使用main。似乎是基于面試。知道你有多深
volatile是為了防止指令重排序以確??梢娦?/p>
對于JVM級別,它是為了防止編譯器重排序
同時,對于一些CPU,它們會通過緩存鎖或線程來解決緩存可見性
但是,目前,很多CPU已經(jīng)過優(yōu)化,因為緩存一致性MESI會帶來性能開銷,因此采用storebuffer機制來解決它進行異步處理的問題,這種機制會導(dǎo)致指令的無序執(zhí)行。這會導(dǎo)致可見性問題。
然后volatile將在CPU級別增加內(nèi)存屏障,以解決由CPU無序執(zhí)行引起的可見性問題