文章詳情頁
java - getValue 和 increment 方法是互斥的?
瀏覽:90日期: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++; }}
假如一個線程在寫,另一個線程在讀,不會出現(xiàn)讀線程讀到的值是寫線程還沒更新之前的值嘛?也就是讀寫線程不同步的情況
問題解答
回答1:volatile關(guān)鍵字就是用來保證內(nèi)存可見性的。
回答2:volatile 修飾的 value 使用 getValue() 讀取的時候,會一直獲取到最新值,滿足可見性volatile 能保證一次讀寫可見性,復(fù)合操作 (比如 value++) 不能保證,需要進行加鎖或其他同步措施
標(biāo)簽:
java
相關(guān)文章:
1. android - 分享到微信,如何快速轉(zhuǎn)換成字節(jié)數(shù)組2. javascript - 能否讓vue-cli的express修改express重啟服務(wù)3. 解決Android webview設(shè)置cookie和cookie丟失的問題4. angular.js - Beego 與 AngularJS的模板格式?jīng)_突,該怎么解決?5. javascript - vue2.0中,$refs對象為什么用駝峰的方式獲取不到屬性?6. node.js - npm一直提示proxy有問題7. html5 - 有人做過防微信app界面的H5 demo嗎?8. javascript - 有沒有iOS微信中可以在背景播放視頻的方法?9. 最新版本的微信web開發(fā)者工具必須要APPID,會提供測試號,但是像你一樣tabBar配置的話不會顯示首頁與日志,難道我要下載跟你一樣的版本?10. Navicat for mysql 中以json格式儲存的數(shù)據(jù)存在大量反斜杠,如何去除?
排行榜

熱門標(biāo)簽