文章詳情頁
java - getValue 和 increment 方法是互斥的?
瀏覽:97日期: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. java固定鍵值轉換,使用枚舉實現字典?2. 前端 - html5 audio不能播放3. vim - win10無法打開markdown編輯器4. 這是什么情況???5. 如何解決tp6在zend中無代碼提示6. window下mysql中文亂碼怎么解決??7. javascript - 移動端開發 H5 頁面在 iOS手機上無法實現 長按復制文本 求解決8. javascript - 微信網頁開發從菜單進入頁面后,按返回鍵沒有關閉瀏覽器而是刷新當前頁面,求解決?9. python - flask學習,user_syy添加報role is invalid keyword for User.10. mysql - 千萬數據 分頁,當偏移量 原來越大時,怎么優化速度
排行榜
