Java多线程与安全发布
阅读后“Java并发在实践中的应用“和”OSGi在实践中的应用“我发现一个特别的主题非常有趣;安全的出版物。以下是来自JCIP的:
为了安全地发布对象,对象和对象状态的引用必须同时对其他线程可见。通过以下方法可以安全地发布构造正确的对象:
- 初始化对象引用。
静态
初始化器。 - 将对它的引用存储到
易挥发
场。 - 将对它的引用存储到
最终
场。 - 将对它的引用存储到由
同步
)锁。
我的第一个问题:有多少java开发人员知道这个问题(问题)?有多少真实世界的java应用程序真正遵循这一原则,这真的是一个问题吗?我有一种感觉,99%的已实现的JVM没有“邪恶”,即线程无法保证(事实上,它的实用(几乎)“不可能”)看到陈旧的数据仅仅是因为引用没有遵循上面的“安全发布成语”。