1. 程式人生 > >Java理論與實踐:正確使用volatile變數

Java理論與實踐:正確使用volatile變數

之所以將這種技術稱之為“開銷較低的讀-寫鎖”是因為您使用了不同的同步機制進行讀寫操作。因為本例中的寫操作違反了使用volatile的第一個條件,因此不能使用volatile安全地實現計數器——您必須使用鎖。然而,您可以在讀操作中使用volatile確保當前值的可見性,因此可以使用鎖進行所有變化的操作,使用volatile進行只讀操作。其中,鎖一次只允許一個執行緒訪問值,volatile允許多個執行緒執行讀操作,因此當使用volatile保證讀程式碼路徑時,要比使用鎖執行全部程式碼路徑獲得更高的共享度——就像讀-寫操作一樣。然而,要隨時牢記這種模式的弱點:如果超越了該模式的最基本應用,結合這兩個競爭的同步機制將變得非常困難。