并發(fā)--JMM,內(nèi)存間交互操作和內(nèi)存交互必須滿足的規(guī)則

JMM

  • 1.用工作內(nèi)存和主內(nèi)存萎胰,可以類比之前的cpu的高速緩存和主內(nèi)存闻坚。

主內(nèi)存和工作內(nèi)存交互需要的八種操作

lock

  • 1.作用于主內(nèi)存,把變量標(biāo)識(shí)為一條線程獨(dú)占的狀態(tài)逝她。

unlock

  • 1.作用于主內(nèi)存的變量浇坐,它把一個(gè)處于鎖定狀態(tài)的變量釋放出來(lái),只有釋放后的變量才可以被其他線程鎖定黔宛。

read

  • 1.作用于主內(nèi)存的變量近刘,把一個(gè)變量的值從主內(nèi)存?zhèn)鬏數(shù)骄€程的工作內(nèi)存,以便后面的load

load

  • 1.作用于工作內(nèi)存的變量,他把read得到變量值放入到工作內(nèi)存的變量副本中觉渴。

use

  • 1.作用于工作內(nèi)存的變量介劫,它把工作內(nèi)存中的變量的傳遞給執(zhí)行引擎,當(dāng)JVM執(zhí)行需要使用變量值的字節(jié)碼指令時(shí)候就會(huì)使用USE操作案淋。

assign

  • 1.作用于工作內(nèi)存的變量座韵,它把一個(gè)從執(zhí)行引擎接受到的值賦值給工作內(nèi)存的變量,JVM遇到給變量賦值的字節(jié)碼指令時(shí)就會(huì)這樣執(zhí)行.

store

  • 1.作用于工作內(nèi)存的變量踢京,他把工作內(nèi)存中的一個(gè)變量傳送到主內(nèi)存從誉碴,以便隨后的write

write

  • 1.作用于主內(nèi)存的變量,他把store操作從工作內(nèi)存得到的變量值放入主內(nèi)存的變量中瓣距。

總結(jié)可以通過(guò)lock獲取對(duì)變量的操作權(quán)限黔帕,通過(guò)unlock釋放,通過(guò)read先把變量讀取到工作內(nèi)存蹈丸,然后通過(guò)load把變量值放入到工作內(nèi)存中的變量副本成黄。
我們使用變量進(jìn)行操作(use),給變量賦值(assign)白华,通過(guò)store把工作內(nèi)存中的變量值傳遞到主內(nèi)存慨默,通過(guò)write把該值寫(xiě)入到主內(nèi)存中的變量。

上述操作必須滿足的規(guī)則

read 和load弧腥,store和write必須成對(duì)出現(xiàn)厦取,且順序如當(dāng)前所示,但是不需要連續(xù)執(zhí)行比如read和load之間可以插入其他的指令管搪。

不允許一個(gè)線程丟棄它最近的assign的操作虾攻,最近是指最后一次的賦值,賦值之后的改變必須同步回主內(nèi)存更鲁。

不允許一個(gè)線程無(wú)原因地(沒(méi)有發(fā)生過(guò)任何assign操作的)把數(shù)據(jù)從線程的工作內(nèi)存同步回主內(nèi)存霎箍。

一個(gè)新的變量只能在主內(nèi)存中誕生,對(duì)一個(gè)變量使用store和use之前必須先使用load和assign

一個(gè)變量只能在同一時(shí)刻被一個(gè)線程鎖定澡为,但是lock操作可以被同一個(gè)線程重復(fù)執(zhí)行多次漂坏,但是對(duì)應(yīng)的unlock也需要執(zhí)行相同次數(shù)。

對(duì)變量執(zhí)行l(wèi)ock操作媒至,將會(huì)清空工作內(nèi)存中此變量的值顶别,在執(zhí)行引擎使用此變量前,需要重新執(zhí)行l(wèi)oad或assign操作初始化變量的值拒啰。

未被lock的變量不允許unlock

對(duì)一個(gè)變量執(zhí)行unlock操作之前驯绎,必須把此變量同步回主內(nèi)存中(執(zhí)行store和write操作)

上述的操作是指jvm規(guī)定對(duì)一個(gè)主內(nèi)存操作的時(shí)候需要進(jìn)行的步驟,其中l(wèi)ock和unlock可以通過(guò)字節(jié)碼指令和咱們的并發(fā)包谋旦,而對(duì)于lock和unlock對(duì)變量的操作底層涉及到內(nèi)存屏障

JMM主要是圍繞并發(fā)過(guò)程中的原子剩失,有序屈尼,可見(jiàn)性

原子性

  • 1.保證了read,load,assign,use,store和write對(duì)變量的原子操作拴孤,如果想保證代碼塊的原子性脾歧,可以使用lock和unlock

可見(jiàn)性

  • JMM把修改的值同步主內(nèi)存則使得其他線程可以看到
  • voliatile則通過(guò)內(nèi)存屏障使得立即可見(jiàn)
  • synchronized 也是同樣的道理

有序

  • voliatile 禁止重排序
  • synchronized則是一個(gè)時(shí)間只允許一個(gè)線程執(zhí)行,所以可以有順序(因?yàn)閱尉€程則從一個(gè)線程看是有順序的)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乞巧,一起剝皮案震驚了整個(gè)濱河市涨椒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绽媒,老刑警劉巖蚕冬,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異是辕,居然都是意外死亡囤热,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)获三,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)旁蔼,“玉大人,你說(shuō)我怎么就攤上這事疙教」琢模” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵贞谓,是天一觀的道長(zhǎng)限佩。 經(jīng)常有香客問(wèn)我,道長(zhǎng)裸弦,這世上最難降的妖魔是什么祟同? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮理疙,結(jié)果婚禮上晕城,老公的妹妹穿的比我還像新娘。我一直安慰自己窖贤,他們只是感情好砖顷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著赃梧,像睡著了一般择吊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上槽奕,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音房轿,去河邊找鬼粤攒。 笑死所森,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的夯接。 我是一名探鬼主播焕济,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼盔几!你這毒婦竟也來(lái)了晴弃?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤逊拍,失蹤者是張志新(化名)和其女友劉穎上鞠,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體芯丧,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芍阎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缨恒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谴咸。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖骗露,靈堂內(nèi)的尸體忽然破棺而出岭佳,到底是詐尸還是另有隱情,我是刑警寧澤萧锉,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布珊随,位于F島的核電站,受9級(jí)特大地震影響驹暑,放射性物質(zhì)發(fā)生泄漏玫恳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一优俘、第九天 我趴在偏房一處隱蔽的房頂上張望京办。 院中可真熱鬧,春花似錦帆焕、人聲如沸惭婿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)财饥。三九已至,卻和暖如春折晦,著一層夾襖步出監(jiān)牢的瞬間钥星,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工满着, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谦炒,地道東北人贯莺。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像宁改,于是被迫代替她去往敵國(guó)和親缕探。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容