如何解决Java中的“双重检查锁定是有问题的”声明?
- 论坛
- 如何解决Java中的“双重检查锁定是有问题的”声明?
8 浏览
如何解决Java中的“双重检查锁定是有问题的”声明?
我想在Java中为多线程实现延迟初始化。
我有类似的代码:
class Foo { private Helper helper = null; public Helper getHelper() { if (helper == null) { Helper h; synchronized(this) { h = helper; if (h == null) synchronized (this) { h = new Helper(); } // 释放内部同步锁 helper = h; } } return helper; } // 其他函数和成员... }
我遇到了"双重检查锁定是有问题的"的声明。
我该如何解决这个问题?