title: why there are two monitorexit
body: <p>This is my java source code:</p>
  
  <pre><code>public class Father{
       public void  doing(){
       synchronized(this){
  
    }
  }
  </code></pre>
  
  <p>then compile,and run javap -verbose Father.class.Here is output:</p>
  
  <pre><code>  public void doing();
  descriptor: ()V
  flags: ACC_PUBLIC
  Code:
    stack=2, locals=3, args_size=1
       0: aload_0
       1: dup
       2: astore_1
       3: monitorenter
       4: aload_1
       5: monitorexit
       6: goto          14
       9: astore_2
      10: aload_1
      11: monitorexit
      12: aload_2
      13: athrow
      14: return
  </code></pre>
  
  <p>why there are two monitorexit.
  Thanks for your help. </p>