双重锁定从checkstyle中消失 - 为什么?

时间:2012-11-20 17:46:56

标签: java checkstyle double-checked-locking

release notes,checkstyle删除了Double-Checked锁定检查。

我很难理解为什么。他们不仅在发布说明中回复了这个问题,而且还在issue tracker

中回复了这个问题
  

删除了DoubleCheckedLocking检查,如Java 5(及更高版本),   使用volatile关键字解决问题。

我假设,如果checkstyle正在删除此警告,那是因为它不再有用。也就是说,错误将不再发生或另一个警告完成工作。但是

我不明白为什么在Java 5中不再发生这样的错误,或者它是如何被另一个警告补充的。有人可以解释一下吗?

编辑:我理解添加volatile关键字如何解决问题。我担心的是:这个警告不是值得的吗?我正在考虑程序员使用上述锁定模式的情况,但忘记声明变量volatile。 checkstyle还不应该警告它吗?

1 个答案:

答案 0 :(得分:8)

描述几乎解释了这个决定。从Java 1.5开始,您可以使用volatile实例变量。它将正确处理内存可见性问题,使用双重检查锁定不再是错误。

这并不意味着使用volatile是解决方案。但在1.5 Java内存模型被重新定义,使volatile足够。

另见