我如何才能实现独家写作,但非独家阅读?我可以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