摘要:它們以一種指令屏障的方式來(lái)控制順序。不過(guò)這樣的方式能保證讀的一瞬間確保線程讀取到最新的數(shù)據(jù),因此要進(jìn)一步做到讀取修改寫入動(dòng)作是一致的,就將其升級(jí)為原子性。
JMM中一些普通變量的操作指令
A、Load操作發(fā)生在read之后(兩個(gè)之間可以有其他的指令)
B、普通變量的修改未必會(huì)立即發(fā)生Store操作,但發(fā)生Store操作,就會(huì)發(fā)生write操作
最細(xì)的粒度支持,也就是對(duì)Load、Store的各種順序控制,load、store兩兩組合為4中情況,LoadLoad、StoreStore、LoadStore、StoreLoad。它們以一種指令屏障的方式來(lái)控制順序。有些系統(tǒng)可能不支持某些指令的順序化,不過(guò),絕大多數(shù)系統(tǒng)都支持StoreLoad指令。
StoreLoad的意思可以簡(jiǎn)單理解為Store優(yōu)先于Load發(fā)生。例如兩個(gè)在某個(gè)瞬間同時(shí)修改和讀取主存中的一個(gè)共享變量,此時(shí)的讀取操作將發(fā)生在修改之后。有了這樣一個(gè)特征,就實(shí)現(xiàn)了最細(xì)粒度的鎖,也是最輕量級(jí)的鎖。
不過(guò)這樣的方式能保證讀的一瞬間確保線程讀取到最新的數(shù)據(jù),因此要進(jìn)一步做到讀取、修改、寫入動(dòng)作是一致的,就將其升級(jí)為原子性。要達(dá)到原子性的效果,可以通過(guò)可見(jiàn)性、CAS自旋來(lái)完成,也可以通過(guò)synchronized來(lái)完成。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/65774.html
摘要:文章簡(jiǎn)介分析的作用以及底層實(shí)現(xiàn)原理,這也是大公司喜歡問(wèn)的問(wèn)題內(nèi)容導(dǎo)航的作用什么是可見(jiàn)性源碼分析的作用在多線程中,和都起到非常重要的作用,是通過(guò)加鎖來(lái)實(shí)現(xiàn)線程的安全性。而的主要作用是在多處理器開發(fā)中保證共享變量對(duì)于多線程的可見(jiàn)性。 文章簡(jiǎn)介 分析volatile的作用以及底層實(shí)現(xiàn)原理,這也是大公司喜歡問(wèn)的問(wèn)題 內(nèi)容導(dǎo)航 volatile的作用 什么是可見(jiàn)性 volatile源碼分析 ...
摘要:內(nèi)存模型對(duì)內(nèi)存模型的介紹對(duì)內(nèi)存模型的結(jié)構(gòu)圖的線程之間的通信是通過(guò)共享內(nèi)存的方式進(jìn)行隱式通信,即線程把某狀態(tài)寫入主內(nèi)存中的共享變量,線程讀取的值,這樣就完成了通信。 Java內(nèi)存模型(JMM) 1.對(duì)內(nèi)存模型的介紹 ①對(duì)Java內(nèi)存模型的結(jié)構(gòu)圖 java的線程之間的通信是通過(guò)共享內(nèi)存的方式進(jìn)行隱式通信,即線程A把某狀態(tài)寫入主內(nèi)存中的共享變量X,線程B讀取X的值,這樣就完成了通信。是一種...
摘要:并發(fā)編程的挑戰(zhàn)并發(fā)編程的目的是為了讓程序運(yùn)行的更快,但是,并不是啟動(dòng)更多的線程就能讓程序最大限度的并發(fā)執(zhí)行。的實(shí)現(xiàn)原理與應(yīng)用在多線程并發(fā)編程中一直是元老級(jí)角色,很多人都會(huì)稱呼它為重量級(jí)鎖。 并發(fā)編程的挑戰(zhàn) 并發(fā)編程的目的是為了讓程序運(yùn)行的更快,但是,并不是啟動(dòng)更多的線程就能讓程序最大限度的并發(fā)執(zhí)行。如果希望通過(guò)多線程執(zhí)行任務(wù)讓程序運(yùn)行的更快,會(huì)面臨非常多的挑戰(zhàn):(1)上下文切換(2)死...
摘要:編譯器,和處理器會(huì)共同確保單線程程序的執(zhí)行結(jié)果與該程序在順序一致性模型中的執(zhí)行結(jié)果相同。正確同步的多線程程序的執(zhí)行將具有順序一致性程序的執(zhí)行結(jié)果與該程序在順序一致性內(nèi)存模型中的執(zhí)行結(jié)果相同。 前情提要 深入理解Java內(nèi)存模型(六)——final 處理器內(nèi)存模型 順序一致性內(nèi)存模型是一個(gè)理論參考模型,JMM和處理器內(nèi)存模型在設(shè)計(jì)時(shí)通常會(huì)把順序一致性內(nèi)存模型作為參照。JMM和處理器內(nèi)...
閱讀 1349·2021-09-28 09:43
閱讀 4117·2021-09-04 16:41
閱讀 1918·2019-08-30 15:44
閱讀 3729·2019-08-30 15:43
閱讀 776·2019-08-30 14:21
閱讀 2037·2019-08-30 11:00
閱讀 3320·2019-08-29 16:20
閱讀 1923·2019-08-29 14:21