併發編程--volatile關鍵字

volatile其實可以簡單的理解爲是java的一把弱鎖(相當於synchronize來講)

 

下面就說下volatile的作用:

  1. 使用volatile修飾變量,確保這個被修飾的變量的一個可見性;
  2. volatile變量弱於synchronize,是一把弱化的鎖;
  3. volatile修飾的變量只確保了變量的可見性,並不能確保像加鎖那樣的原子性;
  4. 使用volatile修飾的變量的操作不會與其他內存中的操作進行重排序(一些編譯器/虛擬機會對一些沒有語義的代碼進行重排序)
  5. volatile變量不會被緩存到寄存器或者其他的處理器不可見的地方,這樣我們讀取volatile類型的變量時總是能讀取到最新返回的值;

 

什麼時候需要用到:

  1. 對變量的更新操作不依賴於當前變量的值,或者能確保只有單線程更新變量的值;
  2. 在訪問變量時不需要加入鎖
  3. 變量不會與其他狀態變量納入到不變性的條件中;

 

 

 

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