volatile 關鍵字


volatile 易變的。


核心:定義程序中變量值的可見範圍。


在C語言中,使用volatile關鍵字來定義變量的值變化被可見範圍。

由於程序訪問寄存器比訪問內存單元要快,因此,編譯器會作減少存取內存的優化,會造成讀髒數據的現象。

當使用volatile關鍵字修飾變量時,編譯器對訪問該變量的代碼就不再進行優化,從而可以提供對特殊地址的穩定訪問。

對變量的每一次操作(讀、寫)都會訪問內存地址,而不是操作緩存在寄存器中的變量。(深入瞭解


在Java語言中,使用volatile關鍵字來定義變量的值的變化的影響範圍。

使用volatile修飾的變量的值變化可以被程序的其他部分可見,保證最新值可以被其他部分感知。

volatile不提供任何原子操作、同步、線程安全相關的機制,只保證變量值變化的可見範圍在內存單元。


如果實現安全的計數器,可以使用volatile和synchronized實現。(深入瞭解


// thread safe counter
public class Counter {
    
    private volatile int value; // allow visiable this value .

    public int getValue() {
    	return value;
    }
    
    public synchronized int increment() { // write lock, 
        return value++;// read->alter->write
    }
    
}








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章