文章詳情頁
java - getValue 和 increment 方法是互斥的?
瀏覽:84日期: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 - js控制元素樣式的疑惑2. css3 - 網站放在本地和放在遠端服務器用 iPhone Safari 打開樣式不同3. javascript - node.js不同模塊之間如何傳值4. android - 哪位大神知道java后臺的api接口的對象傳到前端后輸入日期報錯,是什么情況?求大神指點5. mac連接阿里云docker集群,已經卡了2天了,求問?6. html - 哪些情況下float會失效?7. javascript - web 移動端瀏覽器 用js 能不做判斷當前手機安裝沒安裝app 如果安了就去打開 沒安就去下載哇?8. css3 - text-overflow為何會在li的子標簽a下失效9. 就一臺服務器,mysql數據庫想實現自動備份,如何設計?10. [前端求職必看]前端開發面試題與答案精選_擴展問題
排行榜
