Files
openide/java/java-impl/resources/inspectionDescriptions/DoubleCheckedLocking.html
Leonid Shalupov 40795fe787 IJI-2422: community/java: move resources under resources root
GitOrigin-RevId: 8b2b63fc6db476ca0c2cfe5cadd84db6c4236d0f
2025-02-05 04:43:28 +00:00

27 lines
957 B
HTML

<html>
<body>
Reports <a href="https://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html">double-checked locking</a>.
<p>
Double-checked locking tries to initialize a field on demand and in a thread-safe manner, while avoiding the cost of synchronization.
Unfortunately it is not thread-safe when used on a field that is not declared <code>volatile</code>.
When using Java 1.4 or earlier, double-checked locking doesn't work even with a <code>volatile</code> field.
Read the article linked above for a detailed explanation of the problem.
</p>
<p>Example of incorrect double-checked locking:</p>
<pre><code>
class Foo {
private Helper helper = null;
public Helper getHelper() {
if (helper == null)
synchronized(this) {
if (helper == null) helper = new Helper();
}
return helper;
}
}
// other functions and members...
}
</code></pre>
<!-- tooltip end -->
</body>
</html>