1. 程式人生 > >java中volatile和synchronized

java中volatile和synchronized

  1. JMM
    java Memory Model
    併發過程中如何處理可見性,原子性,有序性的問題
    併發過程中兩個關鍵性的問題
    a 執行緒之間如何通訊:wait() notify() notifall()
    a)共享記憶體 - 隱式通訊
    b) 訊息傳遞 - 顯示通訊

b 執行緒之間如何同步
在共享記憶體的併發模型中,同步是顯示做的 :synchronized
在訊息傳遞都併發模型中由於訊息的傳送必須在訊息的接收之前,所以是隱士的。
2. 定位記憶體可見性
Volatitle synchronized
3.
1. 對於聲明瞭volatile的變數進行寫操作的時候,jmv會像處理器傳送一條Lock字首的指令,會把這個變數所在的快取行的資料寫回到系統記憶體中。
2. 在多處理器的情況下,保證各個處理器快取一致性的特點,就會實現快取一致性的協議。
synchronized :可重入鎖,互斥型,可見性
volatile:可以做到原子性,可見性,不能做到複合操作的原子性