摘要:以下原則是指令重排序不可違背的程序順序性原則一個線程內(nèi)保證語意的串行性原則變量的寫,先發(fā)生于讀,這保證了變量的可見性傳遞性先于,先于,那么必然先于線程的方法先于它的每一個動作線程的所有操作先于線程的終結(jié)鎖規(guī)則解鎖必然發(fā)生在隨后的加鎖前線程的
以下原則是指令重排序不可違背的:
1.程序順序性原則:一個線程內(nèi)保證語意的串行性
2.volatile原則:volatile變量的寫,先發(fā)生于讀,這保證了volatile變量的可見性
3.傳遞性:A先于B,B先于C,那么A必然先于C
4.線程的start()方法先于它的每一個動作
5.線程的所有操作先于線程的終結(jié)(Thread.join)
6.鎖規(guī)則:解鎖必然發(fā)生在隨后的加鎖前
7.線程的中斷先于被中斷線程的代碼
8.對象的構(gòu)造函數(shù)執(zhí)行,結(jié)束先于finalize()方法
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/74704.html
摘要:順序一致性內(nèi)存模型有兩大特性一個線程中所有操作必須按照程序的順序執(zhí)行。這里的同步包括對常用同步原語的正確使用通過以下程序說明與順序一致性兩種內(nèi)存模型的對比順序一致性模型中所有操作完全按程序的順序串行執(zhí)行。 java內(nèi)存模型 java內(nèi)存模型基礎(chǔ) happen-before模型 JSR-133使用happen-before的概念來闡述操作之間的內(nèi)存可見性。在JMM中,如果一個操作執(zhí)行的結(jié)...
摘要:這個規(guī)則比較好理解,無論是在單線程環(huán)境還是多線程環(huán)境,一個鎖處于被鎖定狀態(tài),那么必須先執(zhí)行操作后面才能進(jìn)行操作。線程啟動規(guī)則獨(dú)享的方法先行于此線程的每一個動作。 1. 指令重排序 關(guān)于指令重排序的概念,比較復(fù)雜,不好理解。我們從一個例子分析: public class SimpleHappenBefore { /** 這是一個驗(yàn)證結(jié)果的變量 */ private st...
摘要:舉個例子,在多線程不使用環(huán)境中,每個線程會從主存中復(fù)制變量到緩存以提高性能。保證了變量的可見性關(guān)鍵字解決了變量的可見性問題。在多線程同時共享變量的情形下,關(guān)鍵字已不足以保證程序的并發(fā)性。 volatile 關(guān)鍵字能把 Java 變量標(biāo)記成被存儲到主存中。這表示每一次讀取 volatile 變量都會訪問計(jì)算機(jī)主存,而不是 CPU 緩存。每一次對 volatile 變量的寫操作不僅會寫到 ...
摘要:一言以蔽之,被修飾的變量能夠保證每個線程能夠獲取該變量的最新值,從而避免出現(xiàn)數(shù)據(jù)臟讀的現(xiàn)象。為了實(shí)現(xiàn)內(nèi)存語義時,編譯器在生成字節(jié)碼時,會在指令序列中插入內(nèi)存屏障來禁止特定類型的處理器重排序。volatile原理volatile簡介Java內(nèi)存模型告訴我們,各個線程會將共享變量從主內(nèi)存中拷貝到工作內(nèi)存,然后執(zhí)行引擎會基于工作內(nèi)存中的數(shù)據(jù)進(jìn)行操作處理。 線程在工作內(nèi)存進(jìn)行操作后何時會寫到主內(nèi)存中...
摘要:一言以蔽之,被修飾的變量能夠保證每個線程能夠獲取該變量的最新值,從而避免出現(xiàn)數(shù)據(jù)臟讀的現(xiàn)象。為了實(shí)現(xiàn)內(nèi)存語義時,編譯器在生成字節(jié)碼時,會在指令序列中插入內(nèi)存屏障來禁止特定類型的處理器重排序。volatile原理volatile簡介Java內(nèi)存模型告訴我們,各個線程會將共享變量從主內(nèi)存中拷貝到工作內(nèi)存,然后執(zhí)行引擎會基于工作內(nèi)存中的數(shù)據(jù)進(jìn)行操作處理。 線程在工作內(nèi)存進(jìn)行操作后何時會寫到主內(nèi)存中...
閱讀 3041·2021-11-24 09:38
閱讀 3568·2021-11-23 09:51
閱讀 1123·2021-09-09 11:52
閱讀 4143·2021-08-11 11:18
閱讀 1187·2019-08-30 14:05
閱讀 3285·2019-08-30 11:23
閱讀 1841·2019-08-29 17:02
閱讀 1190·2019-08-26 13:49