]> source.dussan.org Git - sonarqube.git/blob
9885f2c9d02532d6081561d9613a2ee95c771517
[sonarqube.git] /
1 <p> The code synchronizes on an apparently unshared boxed primitive, 
2 such as an Integer.
3 <pre>
4 private static final Integer fileLock = new Integer(1);
5 ...
6   synchronized(fileLock) { 
7      .. do something ..
8      }
9 ...
10 </pre>
11 </p>
12 <p>It would be much better, in this code, to redeclare fileLock as
13 <pre>
14 private static final Object fileLock = new Object();
15 </pre>
16 The existing code might be OK, but it is confusing and a 
17 future refactoring, such as the "Remove Boxing" refactoring in IntelliJ,
18 might replace this with the use of an interned Integer object shared 
19 throughout the JVM, leading to very confusing behavior and potential deadlock.
20 </p>