千鋒教育2023版Java面試寶典Java面試200題(含美團(tuán)、字節(jié)、阿里大廠真

volatile 關(guān)鍵字是Java虛擬機(jī)提供的的最輕量級(jí)的同步機(jī)制,它作為一個(gè)修飾符,用來(lái)修飾變量。它保證變量對(duì)所有線程可見性,禁止指令翟排,但是不保證原子性。我們先來(lái)看下java內(nèi)存模型 (imm) :
。Java虛擬機(jī)規(guī)范視圖定義一種Java內(nèi)存模型,來(lái)屏藏掉各種硬件和提作系統(tǒng)的內(nèi)存訪問差異,以實(shí)現(xiàn)讓Java程序在各種平臺(tái)上都能達(dá)到一致的內(nèi)存訪問效果。
。Java內(nèi)存模型規(guī)定所有的變量都是存在主內(nèi)存當(dāng)中,每個(gè)線程都有自己的工作內(nèi)存。這里的變量包括實(shí)例交量和靜態(tài)變量,但是不包括局部變量,因?yàn)榫植拷涣渴蔷€程私有的。
。線程的工作內(nèi)存保存了被該線程使用的變量的主內(nèi)存副本,線程對(duì)變量的所有損作都必須在工作內(nèi)存中進(jìn)行,而不能直接攝作操作主內(nèi)存。并且每個(gè)線程不能訪問其他線程的工作內(nèi)存。
標(biāo)簽: