“静态”字段的延迟初始化应该“同步” - 如何修复它

时间:2017-08-11 07:02:15

标签: java thread-safety synchronized volatile lazy-initialization

我正在努力解决一个问题 Lazy initialization of "static" fields should be "synchronized"This链接建议的findbug表示我必须创建字段变量volatile或创建初始化块synchronized。哪种方式更好?每种方法的优缺点是什么?

2 个答案:

答案 0 :(得分:1)

没有更好

如何解决这个问题只有几种不同的模式。有关该主题的完整讨论,请参阅here

从这个意义上说:对于新手做的第一步,只需使用synchronized方法。对于"专业"使用 - 见上面的链接;并确定哪种解决方案最符合您的需求。

答案 1 :(得分:0)

在您的示例中,您应该使用synchronized,因为volatile不保证原子性。 如果使用volatile,则可以初始化对象的多个实例。