JVM複習(二)JMM記憶體模型1

2021-09-28 17:09:54 字數 790 閱讀 2333

1、對主記憶體執行讀操作read

2、對工作記憶體執行相應的裝載load

1、工作記憶體執行儲存store

2、主記憶體執行相應的寫操作write

某執行緒修改了值,使用volatile可以讓其他執行緒馬上可見這個執行緒的改變

1、volatile;

2、synchronized(同步解鎖前,會寫變數值回主存而且同步操作會變成順序執行);

3、final一旦初始化完成,其他執行緒就可知

1、在本執行緒內,操作都是有序的;

3、指令重排:乙個執行緒內,在不改變語義的情況下會改變各操作的執行順序,但是多個執行緒的時候,編譯器不會考慮多執行緒之間的語義。如:a=1;b=2;可重排,而a=2;b=a;有依賴的不可重排。

即使做了重排,因為互斥,其他執行緒看到這個執行緒也將是有序的,可以理解為,即使重排了,但是使用同步以後,等鎖釋放了才會看到結果,那麼重排是沒有影響的

1、程式順序原則:乙個執行緒內保證語義的序列性

5、執行緒的start方法必先於它的每乙個其他動作

6、執行緒的所有操作必先於執行緒的終結

7、執行緒的interrupt()先於被中斷執行緒的**

8、物件的建構函式執行結束先於finalize()方法

JMM記憶體模型

依賴於jvm排程作業系統,由作業系統建立乙個核心執行緒klt,核心執行緒最終才會被cpu排程 jvm結構 jmm八大原子操作 volatitle如何保證可見性?匯流排鎖 當被volatitle修飾的變數想要修改主記憶體的資料時,會傳送一條帶有lock字首的彙編指令到匯流排上,此時它會鎖住匯流排,禁止...

JMM記憶體模型

mesi快取一致性協議 多個cpu從主記憶體讀取同乙個資料到各自的快取記憶體,當其中的乙個cpu修改了快取裡的資料,該資料會馬上同步回主記憶體,其它cpu通過匯流排嗅探機制可感知到資料的變化從而將自己快取裡的資料失效 lock unlock 匯流排加lock變成序列,效率降低 store前加lock...

java記憶體模型 JMM

1 原子性 atomicity 不可中斷的操作,即使是多個執行緒一起執行的時候,也不會被其他執行緒干擾 2 可見性 visibility 當乙個執行緒修改了某乙個共享變數的值,其他執行緒是否能夠立即知道這個修改 3 有序性 ordering 重排指令可以保證序列語義一致,但沒有義務保證多執行緒之間的...