一、主存儲(chǔ)器與工作存儲(chǔ)器
JMM 分為主存儲(chǔ)器(main memory)和工作存儲(chǔ)器(working memory)兩種。
10年積累的做網(wǎng)站、成都網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有云城免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
主存儲(chǔ)器(main memory):
類(lèi)的實(shí)例所存在的區(qū)域(堆),main memory為所有的線(xiàn)程所共享(棧)。
工作存儲(chǔ)器(working memory):
每個(gè)線(xiàn)程各自獨(dú)立所擁有的作業(yè)區(qū),在working memory中,存有main memory中的部分拷貝,稱(chēng)之為工作拷貝(working copy)。
二、字段的使用
2.1 字段的引用
線(xiàn)程無(wú)法直接對(duì)主存儲(chǔ)器進(jìn)行操作,當(dāng)線(xiàn)程需要引用實(shí)例的字段的值時(shí),會(huì)將字段值從主存儲(chǔ)器拷貝到工作存儲(chǔ)器上(read->load)。
當(dāng)線(xiàn)程再次需要引用相同的字段時(shí),可能直接使用剛才的工作拷貝(use),也可能重新從主存儲(chǔ)器獲?。╮ead->load->use)。
具體會(huì)出現(xiàn)哪種情況,由JVM決定。
2.2 字段的賦值
由于線(xiàn)程無(wú)法直接對(duì)主存儲(chǔ)器進(jìn)行操作,所以也就無(wú)法直接將值指定給字段。
當(dāng)線(xiàn)程欲將值指定給字段時(shí),會(huì)一次將值指定給位于工作存儲(chǔ)器上的工作拷貝(assign),指定完成后,工作拷貝的內(nèi)容便會(huì)復(fù)制到主存儲(chǔ)器(store->write),至于何時(shí)進(jìn)行復(fù)制,由JVM決定。
因此,當(dāng)線(xiàn)程反復(fù)對(duì)一個(gè)實(shí)例的字段進(jìn)行賦值時(shí),可能只會(huì)對(duì)工作拷貝進(jìn)行指定(assign),此時(shí)只有指定的最后結(jié)果會(huì)在某個(gè)時(shí)刻拷貝到主存儲(chǔ)器(store-write);也可能在每次指定時(shí),都進(jìn)行拷貝到主存儲(chǔ)器的操作(assign->store->write)。
三、線(xiàn)程的原子操作
Java定義了線(xiàn)程的六種原子操作:
read
負(fù)責(zé)從主存儲(chǔ)器(main memory)拷貝到工作存儲(chǔ)器(working memory)
write
與上述相反,負(fù)責(zé)從工作存儲(chǔ)器(working memory)拷貝到主存儲(chǔ)器(main memory)
use
表示線(xiàn)程引用工作存儲(chǔ)器(working memory)的值
assign
表示線(xiàn)程將值指定給工作存儲(chǔ)器(working memory)
lock
表示線(xiàn)程取得鎖定
unlock
表示線(xiàn)程解除鎖定
參考:https://h3pl.github.io/categories/后端/Java并發(fā)/
網(wǎng)頁(yè)名稱(chēng):Java進(jìn)階(5)-并發(fā)(JMM)
本文地址:http://chinadenli.net/article14/ppdhde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站策劃、小程序開(kāi)發(fā)、服務(wù)器托管、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)