我正在尝试解决一个问题,它说Lazy initialization of "static" fields should be "synchronized"
findbug
建议的。此链接建议我必须使字段变量volatile
或使初始化块synchronized
。哪种方式更好?每种方法的优缺点是什么?
没有比这更好的了。
只有几种不同的模式可以解决此问题。有关该主题的完整讨论,请参阅此处。
从这个意义上说:对于迈出第一步的新手,只需使用synchronized
方法即可。对于"专业"用途 - 请参阅上面的链接;并确定其中给出的解决方案最适合您的需求。
在您的示例中,您应该使用synchronized
volatile
因为不能保证原子性。 如果使用volatile
则可以初始化对象的多个实例。