JMM記憶體模型

2021-10-10 14:10:08 字數 633 閱讀 7833

依賴於jvm排程作業系統,由作業系統建立乙個核心執行緒klt,核心執行緒最終才會被cpu排程

jvm結構·

jmm八大原子操作:

volatitle如何保證可見性?

匯流排鎖:

當被volatitle修飾的變數想要修改主記憶體的資料時,會傳送一條帶有lock字首的彙編指令到匯流排上,此時它會鎖住匯流排,禁止其它cpu訪問該變數

快取一致性:

兩個執行緒同時將要修改的volatitle變數同時讀取到自己的快取記憶體中,當各自執行引擎想要修改的時候,會傳送一條資訊給匯流排,如果多個cpu同時修改,那都會傳送訊息給匯流排,由匯流排裁判由誰修改,然後其它cpu會通過匯流排嗅探的方式讓自己的快取中變數失效,所以會一直等待(這也是指令重排的優勢)等到要修改的cpu修改完成會在傳送一條訊息通知匯流排已修改完成,然後其它cpu會再去主記憶體重新讀取最新的值

JMM記憶體模型

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

java記憶體模型 JMM

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

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

1 對主記憶體執行讀操作read 2 對工作記憶體執行相應的裝載load 1 工作記憶體執行儲存store 2 主記憶體執行相應的寫操作write 某執行緒修改了值,使用volatile可以讓其他執行緒馬上可見這個執行緒的改變 1 volatile 2 synchronized 同步解鎖前,會寫變數...