<!DOCTYPE qhelp PUBLIC
  "-//Semmle//qhelp//EN"
  "qhelp.dtd">
<qhelp>


<overview>
<p>Empty synchronized blocks suspend execution until a lock can be acquired,
which is then released immediately. This is unlikely to achieve the desired effect
and may indicate the presence of incomplete code or incorrect synchronization. It may also lead to
concurrency problems.
</p>

</overview>
<recommendation>

<p>Check which code needs to be synchronized.
Any code that requires synchronization on the given lock should be placed 
within the synchronized block. 
</p>

</recommendation>
<references>

<li>
  The Java Language Specification:
  <a href="http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.19">The synchronized Statement</a>.
</li>
<li>
  The Java Tutorials:
    <a href="http://docs.oracle.com/javase/tutorial/essential/concurrency/sync.html">Synchronization</a>.
</li>


</references>
</qhelp>
