java中關鍵字volatile

2021-07-31 22:12:31 字數 426 閱讀 7259

1.用在多執行緒同步變數時, 執行緒為了提高效率,將某成員變數(如a)拷貝了乙份(如b),執行緒中對a的訪問其實訪問的是b。只在某些動作時才進行a和b的同步。因此存在a和b不一致的情況。volatile就是用來避免這種情況的。volatile告訴jvm, 它所修飾的變數不保留拷貝,直接訪問主記憶體中的(也就是上面說的a) 

4.volatile關鍵字用於宣告簡單型別變數,如int、float、 boolean等資料型別。如果這些簡單資料型別宣告為volatile,對它們的操作就會變成原子級別的。

5.在使用volatile關鍵字時要慎重,並不是只要簡單型別變數使用volatile修飾,對這個變數的所有操作都是原子操作,當變數的值由自身的上乙個決定時,如n=n+1、n++ 等,volatile關鍵字將失效,只有當變數的值和自身上乙個值無關時對該變數的操作才是原子級別的,如n = m + 1,這個就是原級別的。

java中this關鍵字

1 this 關鍵字 疑問 建立的p 物件為什麼沒有值。解答 name 與age 在指定的建構函式裡面已經存在,當name name 這個語句執行的時候,如果jvm 在該方法內能尋找到該變數,則不會去尋找成員變數,那麼要想指定給成員變數或物件的屬性進行初始化賦值,那麼必須指定name 是成員屬性。1...

static關鍵字 java關鍵字

先按照宣告順序初始化基類靜態變數和靜態 塊,接著按照宣告順序初始化子類靜態變數和靜態 塊,而後按照宣告順序初始化基類普通變數和普通 塊,然後執行基類建構函式,接著按照宣告順序初始化子類普通變數和普通 塊,最後執行子類建構函式。import static com.test.test1.fu.say i...

Java中的關鍵字

abstract 抽象的 continue 繼續 for 當 的時候 new 新建 switch 轉換 assert 斷言 default 預設 if 如果 package 打包 synchronized 同步 boolean 布林 do 做 goto 跳轉到 private 私有的 this 這個...