Java JMM 模型 之可見性

背景知識:

主內(nèi)存與工作內(nèi)存

Java程序在工作中,變量存儲在主內(nèi)存, 多線程場景下,每個線程有一個私有的工作內(nèi)存

每個線程對數(shù)據(jù)的操作都先發(fā)生在自己的工作內(nèi)存

然后再寫回主內(nèi)存


舉個例子:

如下圖, 三個線程同時訪問student對象的age屬性,一個線程在自己的工作內(nèi)存把25改成37

然后將37 寫回主內(nèi)存


所謂可見性

是JMM 要讓所有線程立刻知道,主內(nèi)存中原來25的數(shù)值變成了37


什么是JMM

Java Memory Model? Java內(nèi)存模型

是不存在的抽象的概念,

描述的是管理內(nèi)存的規(guī)范,

規(guī)定了程序中各個變量(實例字段,靜態(tài)字段,構(gòu)成數(shù)組對象的元素) 的訪問方式

JMM 規(guī)定 線程 解鎖前,需要將共享變量的數(shù)值刷新會主內(nèi)存

線程加鎖前,需要將主內(nèi)存的最新值寫道自己的工作內(nèi)存

加鎖解鎖是同一把鎖


JMM 保證了

可見性

原子性

有序性

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容