文章詳情頁
java - getValue 和 increment 方法是互斥的?
瀏覽:191日期: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. docker 下面創建的IMAGE 他們的 ID 一樣?這個是怎么回事????2. dockerfile - 我用docker build的時候出現下邊問題 麻煩幫我看一下3. angular.js使用$resource服務把數據存入mongodb的問題。4. docker gitlab 如何git clone?5. debian - docker依賴的aufs-tools源碼哪里可以找到啊?6. macos - mac下docker如何設置代理7. docker網絡端口映射,沒有方便點的操作方法么?8. docker api 開發的端口怎么獲取?9. docker start -a dockername 老是卡住,什么情況?10. docker - 如何修改運行中容器的配置
排行榜

網公網安備