1. 程式人生 > >Java中的volatite關鍵字詳解

Java中的volatite關鍵字詳解

Java中的volatite關鍵字:

(可見性)

1. Java中的記憶體模型:

    (1) 可見性:使用volatitesychronizedfinal來操作可見性

        指執行緒之間的可見性,一個執行緒修改的狀態對另一個執行緒是可見的。(volatite關鍵字修飾的物件

    (2) 原子性:使用sychronizedlockunlock來操作原子性

       舉例:a = 0;(原子操作) /  a++;(非原子操作,存在執行緒安全作用

    (3) 有序性:使用關鍵字volatitesychronized關鍵字來操作有序性

    問題:程式是按照程式碼的先後順序執行,但

JVM會發生指令重排

            單執行緒無影響、多執行緒有影響。

 

 2. volatite原理(稍弱的同步機制):

    (1) volite兩大特性:

        ① 保證“可見性”;(但不能保證“原子性”;)

        因此:不能保證執行緒安全問題;

        ② 禁止指令重排,保證“有序性”;

(2) Volatite變數相對於普通變數的最大特點:

    保證了新值能立即同步到主記憶體,以及在使用前從住記憶體重新整理。