我正在努力解决一个问题
Lazy initialization of "static" fields should be "synchronized"
。This链接建议的findbug
表示我必须创建字段变量volatile
或创建初始化块synchronized
。哪种方式更好?每种方法的优缺点是什么?
答案 0 :(得分:1)
没有更好。
如何解决这个问题只有几种不同的模式。有关该主题的完整讨论,请参阅here。
从这个意义上说:对于新手做的第一步,只需使用synchronized
方法。对于"专业"使用 - 见上面的链接;并确定哪种解决方案最符合您的需求。
答案 1 :(得分:0)
在您的示例中,您应该使用synchronized
,因为volatile
不保证原子性。
如果使用volatile
,则可以初始化对象的多个实例。