關(guān)于JVM內(nèi)存模型的描述可以看這個(gè)鏈接:http://flyingdutchman.iteye.com/blog/1856802。lock(鎖定):將一個(gè)變量標(biāo)識(shí)為被一個(gè)線程獨(dú)占狀態(tài)。unlock(解鎖):將一個(gè)變量從獨(dú)占狀態(tài)釋放出來(lái),釋放后的變量才可以被其他線程鎖定。read(讀取):將一個(gè)變量的值從主內(nèi)存?zhèn)鬏數(shù)焦ぷ鲀?nèi)存中,以便隨后的load操作。load(載入):把read操作從主內(nèi)存中得到的變量值放入工作內(nèi)存的變量的副本中。use(使用):把工作內(nèi)存中的一個(gè)變量的值傳給執(zhí)行引擎,每當(dāng)虛擬機(jī)遇到一個(gè)使用到變量的指令時(shí)都會(huì)使用該指令。assign(賦值):把一個(gè)從執(zhí)行引擎接收到的值賦給工作內(nèi)存中的變量,每當(dāng)虛擬機(jī)遇到一個(gè)給變量賦值的指令時(shí),都要使用該操作。store(存儲(chǔ)):把工作內(nèi)存中的一個(gè)變量的值傳遞給主內(nèi)存,以便隨后的write操作。write(寫(xiě)入):把store操作從工作內(nèi)存中得到的變量的值寫(xiě)到主內(nèi)存中的變量。我的問(wèn)題是read可以直接把主內(nèi)存中的變量放到線程的工作內(nèi)存來(lái),為什么要搞個(gè)load創(chuàng)建一個(gè)副本?read的時(shí)候不就相當(dāng)于給主內(nèi)存中對(duì)應(yīng)的變量創(chuàng)建了一個(gè)副本嗎?而且write也是一個(gè)廢操作,可以直接寫(xiě)入的啊?
JVM內(nèi)存模型操作的多余步load和write有什么用?
拉風(fēng)的咖菲貓
2018-10-18 16:32:27