文章詳情頁
java - getValue 和 increment 方法是互斥的?
瀏覽:79日期: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. android - NavigationView 的側滑菜單中如何保存新增項(通過程序添加)2. python - 管道符和ssh傳文件3. 老師 我是一個沒有學過php語言的準畢業生 我希望您能幫我一下4. python - Pycharm一句代碼寫完可以自動補全空格么?5. 這段代碼既不提示錯誤也看不到結果,請老師明示錯在哪里,謝謝!6. 提示語法錯誤語法錯誤: unexpected ’abstract’ (T_ABSTRACT)7. tp5 不同控制器中的變量調用問題8. 微信開放平臺 - android 微信支付后點完成按鈕,后回調打開第三方頁面,屏幕閃動,求解決方法9. mysql服務無法啟動1067錯誤,誰知道正確的解決方法?10. php7.3.4中怎么開啟pdo驅動
排行榜
