深入理解Java多執行緒與併發框(第⑦篇)——volatile 關鍵字

無敵天驕發表於2020-03-27

概念

把對 volatile變數的單個讀/寫,看成是使用 同一個監視器鎖 對這些單個讀/寫操作做了 同步。 原理:插入記憶體遮蔽指令,禁止一定條件下的重排序。

volatile 是輕量級的同步機制

舉例說明:

public class Assignment {
	int value = 1;
	/**
     * 加法
     */
	public void assign1() {
		value = 1;
		// 單操作
	}
	public void assign2() {
		value = 2;
		// 單操作
	}
}

volatile禁止指令重排序也有一些規則,簡單列舉一下**(重點是存在多操作)**:

  1. 當第二個操作是voaltile寫時,無論第一個操作是什麼,都不能進行重排序
  2. 當地一個操作是volatile讀時,不管第二個操作是什麼,都不能進行重排序
  3. 當第一個操作是volatile寫時,第二個操作是volatile讀時,不能進行重排序


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69964492/viewspace-2683019/,如需轉載,請註明出處,否則將追究法律責任。

相關文章