Java multi-threading & Safe Publication [已关闭]
在阅读了“Java并发实践”和“实践中的OSGI”之后,我发现一个特定的主题非常有趣;安全发布。以下内容来自JCIP:
若要安全地发布对象,必须同时使对该对象的引用和该对象的状态对其他线程可见。正确构造的对象可以通过以下方式安全地发布:
- 从静态初始值设定项初始化对象引用。
- 将对它的引用存储到可变字段中。
- 将对它的引用存储到最终字段中。
- 将对它的引用存储到由(同步)锁正确保护的字段中。
我的第一个问题:有多少Java开发人员意识到这个(问题)?有多少现实世界的java应用程序真正遵循了这一点,这真的是一个真正的问题吗?我有一种感觉,99%的已实现JVM并不是那么“邪恶”,即线程不能保证(实际上它的实际(几乎)“不可能”)看到过时的数据,只是因为引用没有遵循上面的“安全发布习语”。