MyT*_*tle 5 java multithreading
我如何才能实现独家写作,但非独家阅读?我synchronize可以访问setter并创建变量volatile吗?这够了吗?
看看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变量而不是lock.对于volatile变量,必须满足以下两个条件才能提供所需的线程安全性:
_写入变量不依赖于其当前值.
_变量不参与其他变量的不变量.
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |