文章詳情頁
java - getValue 和 increment 方法是互斥的?
瀏覽:94日期:2024-01-21 08:49:07
問題描述
public class CheesyCounter { // Employs the cheap read-write lock trick // All mutative operations MUST be done with the ’this’ lock held @GuardedBy('this') private volatile int value; public int getValue() { return value; } public synchronized int increment() {return value++; }}
假如一個線程在寫,另一個線程在讀,不會出現讀線程讀到的值是寫線程還沒更新之前的值嘛?也就是讀寫線程不同步的情況
問題解答
回答1:volatile關鍵字就是用來保證內存可見性的。
回答2:volatile 修飾的 value 使用 getValue() 讀取的時候,會一直獲取到最新值,滿足可見性volatile 能保證一次讀寫可見性,復合操作 (比如 value++) 不能保證,需要進行加鎖或其他同步措施
標簽:
java
相關文章:
1. javascript - 分類編輯保留之前分類名稱2. css - 移動端 line-height安卓錯位,蘋果機正常用,縮放解決了,可是又出來了占位的問題3. 求救一下,用新版的phpstudy,數據庫過段時間會消失是什么情況?4. javascript - 彈出一個子窗口,操作之后關閉,主窗口會得到相應的響應,例如網站的某些登錄界面,django后臺的管理等,這是怎么實現的呢?5. javascript - 函數設置參數默認值的問題6. list - python 求助7. javascript 的console.log 問題8. 環境搭建 - anaconda 創建python2.7環境中打開編譯器確是3.6版本9. mysql replace 死鎖10. extra沒有加載出來
排行榜
