Tag: 内存屏障

在链接构造函数时,JVM的隐式内存屏障如何表现?

参考我之前关于不完整构造物体的问题 ,我有第二个问题。 正如Jon Skeet指出的那样,在构造函数的末尾有一个隐含的内存障碍,可以确保所有线程都可以看到final字段。 但是如果构造函数调用另一个构造函数呢? 在每个人的最后是否有这样的记忆障碍,或者只是在第一个被召唤的人的最后? 也就是说,当“错误”解决方案是: public class ThisEscape { public ThisEscape(EventSource source) { source.registerListener( new EventListener() { public void onEvent(Event e) { doSomething(e); } }); } } 正确的一个是工厂方法版本: public class SafeListener { private final EventListener listener; private SafeListener() { listener = new EventListener() { public void onEvent(Event e) { doSomething(e); } } } […]