我如何才能實現獨家寫作,但非獨家閱讀?我可以synchronize
訪問setter並生成一個變量volatile
?這夠了嗎?如何實現獨家寫作,但非獨家閱讀?
5
A
回答
6
看那Java5的併發API:
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/locks/ReadWriteLock.html
這將實現您的要求,因爲你可以允許多個線程讀取無鎖,只有書寫時鎖定。
這裏一個有趣的帖子比較該API與傳統閱讀時同步:ReentrantReadWriteLock vs synchronized
此外,由於@assylias在評論說,你應該避免鎖定時,它是不是真的有必要。
事實上,你只能和只信任volatile
關鍵字,如果兩個條件都滿足:
只能下 組受限的情況下使用volatile變量而不是鎖。爲了提供期望的線程安全性,以下兩個條件都必須滿足volatile變量:
_寫入變量不取決於其當前值。
_ 變量不參與其他變量的不變量。
+1
根據使用情況,可能沒有必要使用鎖定並且volatile可能就足夠了。 – assylias
相關問題
- 1. 獨家重寫
- 2. 行家單獨工作,但ANT
- 3. 獨家iOS UTI
- 4. 獨家分離
- 5. 獨家鎖定
- 6. 如何獨家更換?
- 7. 獨家使用Bootstrap3
- 8. Java閱讀器作家
- 9. 上市獨特的賣家和買家
- 10. 獨熱編碼器實現pandas.get_dummies,如何閱讀語法
- 11. Dask - 獨家資源訪問?
- 12. 相互獨家的裝置?
- 13. Sharepoint 2010獨家專欄?
- 14. 獨家觸摸功能
- 15. ASP.NET FormsAuthentication獨家登錄
- 16. 與nolock和獨家鎖
- 17. UIBarButtonItem,設置獨家觸摸
- 18. mysql:獨家選擇像SQS?
- 19. grep遞歸獨家搜索
- 20. Grails - 標準,獨家選擇
- 21. MySQL的獨家排選擇
- 22. 確保獨家訪問webservice
- 23. django「獨家」複選框
- 24. 獨家和MySQL選擇行
- 25. 如何將所有閱讀器作爲一個作家進入讀寫器鎖?
- 26. Magento閱讀客戶國家
- 27. 如何實現/建立兩個連續的獨家網關BPMN2圖
- 28. 如何讓作曲家安裝非作曲家包?
- 29. PDF閱讀器通過PDF閱讀器---在Android中的作家
- 30. 用於Django網絡應用程序的Sqlite獨家閱讀/更新
什麼樣的變量是?有些類型具有保證的原子寫入。 –
你能展示一個需要它的代碼嗎?在某些情況下,您可以簡單地標記變量volatile。 – assylias