Following is the bottom part of a sample jstack output that detects one deadlock that involves the java.util.concurrent ownable synchronizer.

Found one Java-level deadlock:
=============================
"SThread-6":
 waiting for ownable synchronizer 0x029bcdb8, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
  which is held by "SThread-4"
"SThread-4":
    waiting for ownable synchronizer 0x029bcde0, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
    which is held by "SThread-5"
"SThread-5":
    waiting for ownable synchronizer 0x029bce08, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
  which is held by "SThread-6"

Java stack information for the threads listed above:
===================================================
"SThread-6":
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x029bcdb8> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:712)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:743)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1079)
    at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:186)
    at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:262)
    at Deadlock$DeadlockThread.goSyncDeadlock(Deadlock.java:92)
    at Deadlock$DeadlockThread.syncLock(Deadlock.java:77)
    at Deadlock$DeadlockThread.run(Deadlock.java:60)
"SThread-4":
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x029bcde0> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:712)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:743)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1079)
    at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:186)
    at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:262)
    at Deadlock$DeadlockThread.goSyncDeadlock(Deadlock.java:92)
    at Deadlock$DeadlockThread.syncLock(Deadlock.java:77)
    at Deadlock$DeadlockThread.run(Deadlock.java:60)
"SThread-5":
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x029bce08> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:712)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:743)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1079)
    at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:186)
    at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:262)
    at Deadlock$DeadlockThread.goSyncDeadlock(Deadlock.java:92)
    at Deadlock$DeadlockThread.syncLock(Deadlock.java:77)
    at Deadlock$DeadlockThread.run(Deadlock.java:60)