title: Meaning of "- locked" in a thread dump
body: <p>I captured the following 2 snapshot of a thread at 2 different time: the first was when the application stalled, the second was when the application was able to start up. I'm not sure whether the application issue was related to the difference of the 2 thread dumps:</p>
  
  <pre><code>"DispatchThread: [com.ibm.mq.jmqi.remote.impl.RemoteSession[:/28dd1d5b][connectionId=414D5143424E535341434920202020205DD7618B2D0AD502]]" daemon prio=3 tid=0x0000000008001800 nid=0x56 in Object.wait() [0xfffffc7fde379000]
     java.lang.Thread.State: TIMED_WAITING (on object monitor)
      at java.lang.Object.wait(Native Method)
      - waiting on &lt;0xfffffc7bc3b048b8&gt; (a com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread$SleepingEventSync)
      at com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread.waitOnSleepingEvent(RemoteDispatchThread.java:122)
      - locked &lt;0xfffffc7bc3b048b8&gt; (a com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread$SleepingEventSync)
      at com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread.sleepPhase(RemoteDispatchThread.java:605)
      at com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread.run(RemoteDispatchThread.java:359)
      at com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.runTask(WorkQueueItem.java:319)
      at com.ibm.msg.client.commonservices.workqueue.SimpleWorkQueueItem.runItem(SimpleWorkQueueItem.java:99)
      at com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.run(WorkQueueItem.java:343)
      at com.ibm.msg.client.commonservices.workqueue.WorkQueueManager.runWorkQueueItem(WorkQueueManager.java:312)
      at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManagerImplementation$ThreadPoolWorker.run(WorkQueueManagerImplementation.java:1227)
  
   Locked ownable synchronizers:
      - None
  
  
  "DispatchThread: [com.ibm.mq.jmqi.remote.impl.RemoteSession[connectionId=414D5143424E535341434920202020205DD7CE02236C1602]]" daemon prio=3 tid=0x000000000cda8000 nid=0x12b5b in Object.wait() [0xfffffd7fd144d000]
     java.lang.Thread.State: TIMED_WAITING (on object monitor)
      at java.lang.Object.wait(Native Method)
      at com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread.waitOnSleepingEvent(RemoteDispatchThread.java:151)
      - locked &lt;0xfffffd7c06686440&gt; (a com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread$SleepingEventSync)
      at com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread.sleepPhase(RemoteDispatchThread.java:636)
      at com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread.run(RemoteDispatchThread.java:385)
      ....
  </code></pre>
  
  <p>Locked ownable synchronizers:
          - None</p>
  
  <p>I'm trying to understand the meaning of  "- locked &lt;0xfffffd7c06686440>" in the 2 snapshots of the thread. It doesn't seem to suggest it owned a lock (Locked ownable synchronizers: None).</p>
  
  <p>Another question is the top frame in both snapshot is Object.wait() but the first has a extra line "- waiting on &lt;0xfffffc7bc3b048b8>" and the second line doesn't. Why is that?</p>