文章詳情頁
java - getValue 和 increment 方法是互斥的?
瀏覽:89日期: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. 網頁爬蟲 - Python 爬蟲中如何處理驗證碼?2. Python如何播放還存在StringIO中的MP3?3. python - 我在使用pip install -r requirements.txt下載時,為什么部分能下載,部分不能下載4. Python爬蟲如何爬取span和span中間的內容并分別存入字典里?5. javascript - 請教如何獲取百度貼吧新增的兩個加密參數6. python - Win7調用flup報錯’module’ object has no attribute ’fromfd’7. mysql 一個sql 返回多個總數8. mysql - 分庫分表、分區、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處9. python - 編碼問題求助10. mysql - 如何減少使用或者不用LEFT JOIN查詢?
排行榜
