jstack process number, print out the running status of the thread:
java.lang.Thread.State: BLOCKED (on object monitor)--indicates that the thread is blocked
BLOCKED is due to synchronized locks.
- waiting to lock <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed)
Description blocking is waiting for this lock.
So who holds the lock?
"pool-1-thread-8" #18 prio=5 os_prio=0 tid=0x0000000059650800 nid=0x21d4 runnable [0x000000005af5f000]
java.lang.Thread.State: RUNNABLE
at code.example.base.util.concurrent.lock.speed.SyncSpeed.lockRun(SyncSpeed.java:6)
- locked <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed)
at code.example.base.util.concurrent.lock.speed.SpeedTest$1.run(SpeedTest.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
This thread holds the lock and is running.
"pool-1-thread-16" #26 prio=5 os_prio=0 tid=0x0000000059658800 nid=0x140 waiting for monitor entry [0x000000005bb1f000] java.lang.Thread.State: BLOCKED (on object monitor) at code.example.base.util.concurrent.lock.speed.SyncSpeed.lockRun(SyncSpeed.java:6) - waiting to lock <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed) at code.example.base.util.concurrent.lock.speed.SpeedTest$1.run(SpeedTest.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) Locked ownable synchronizers: - <0x00000000d6cb3438> (a java.util.concurrent.ThreadPoolExecutor$Worker) "pool-1-thread-15" #25 prio=5 os_prio=0 tid=0x0000000059658000 nid=0x22c8 waiting for monitor entry [0x000000005b95e000] java.lang.Thread.State: BLOCKED (on object monitor) at code.example.base.util.concurrent.lock.speed.SyncSpeed.lockRun(SyncSpeed.java:6) - waiting to lock <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed) at code.example.base.util.concurrent.lock.speed.SpeedTest$1.run(SpeedTest.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) Locked ownable synchronizers: - <0x00000000d6cb3100> (a java.util.concurrent.ThreadPoolExecutor$Worker) "pool-1-thread-14" #24 prio=5 os_prio=0 tid=0x0000000059657000 nid=0x904 waiting for monitor entry [0x000000005b85f000] java.lang.Thread.State: BLOCKED (on object monitor) at code.example.base.util.concurrent.lock.speed.SyncSpeed.lockRun(SyncSpeed.java:6) - waiting to lock <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed) at code.example.base.util.concurrent.lock.speed.SpeedTest$1.run(SpeedTest.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) Locked ownable synchronizers: - <0x00000000d6cb2e58> (a java.util.concurrent.ThreadPoolExecutor$Worker) "pool-1-thread-13" #23 prio=5 os_prio=0 tid=0x0000000059656800 nid=0x1ef4 waiting for monitor entry [0x000000005b59f000] java.lang.Thread.State: BLOCKED (on object monitor) at code.example.base.util.concurrent.lock.speed.SyncSpeed.lockRun(SyncSpeed.java:6) - waiting to lock <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed) at code.example.base.util.concurrent.lock.speed.SpeedTest$1.run(SpeedTest.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) Locked ownable synchronizers: - <0x00000000d6cb2b20> (a java.util.concurrent.ThreadPoolExecutor$Worker) "pool-1-thread-12" #22 prio=5 os_prio=0 tid=0x0000000059655800 nid=0x26ec waiting for monitor entry [0x000000005b6df000] java.lang.Thread.State: BLOCKED (on object monitor) at code.example.base.util.concurrent.lock.speed.SyncSpeed.lockRun(SyncSpeed.java:6) - waiting to lock <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed) at code.example.base.util.concurrent.lock.speed.SpeedTest$1.run(SpeedTest.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) Locked ownable synchronizers: - <0x00000000d6cb2878> (a java.util.concurrent.ThreadPoolExecutor$Worker) "pool-1-thread-11" #21 prio=5 os_prio=0 tid=0x0000000059655000 nid=0x1568 waiting for monitor entry [0x000000005b45e000] java.lang.Thread.State: BLOCKED (on object monitor) at code.example.base.util.concurrent.lock.speed.SyncSpeed.lockRun(SyncSpeed.java:6) - waiting to lock <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed) at code.example.base.util.concurrent.lock.speed.SpeedTest$1.run(SpeedTest.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) Locked ownable synchronizers: - <0x00000000d6cb25d0> (a java.util.concurrent.ThreadPoolExecutor$Worker) "pool-1-thread-10" #20 prio=5 os_prio=0 tid=0x0000000059654000 nid=0x18f4 waiting for monitor entry [0x000000005b31f000] java.lang.Thread.State: BLOCKED (on object monitor) at code.example.base.util.concurrent.lock.speed.SyncSpeed.lockRun(SyncSpeed.java:6) - waiting to lock <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed) at code.example.base.util.concurrent.lock.speed.SpeedTest$1.run(SpeedTest.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) Locked ownable synchronizers: - <0x00000000d6cb2328> (a java.util.concurrent.ThreadPoolExecutor$Worker) "pool-1-thread-9" #19 prio=5 os_prio=0 tid=0x0000000059653800 nid=0x1960 waiting for monitor entry [0x000000005b11f000] java.lang.Thread.State: BLOCKED (on object monitor) at code.example.base.util.concurrent.lock.speed.SyncSpeed.lockRun(SyncSpeed.java:6) - waiting to lock <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed) at code.example.base.util.concurrent.lock.speed.SpeedTest$1.run(SpeedTest.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) Locked ownable synchronizers: - <0x00000000d6cb2080> (a java.util.concurrent.ThreadPoolExecutor$Worker) "pool-1-thread-8" #18 prio=5 os_prio=0 tid=0x0000000059650800 nid=0x21d4 runnable [0x000000005af5f000] java.lang.Thread.State: RUNNABLE at code.example.base.util.concurrent.lock.speed.SyncSpeed.lockRun(SyncSpeed.java:6) - locked <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed) at code.example.base.util.concurrent.lock.speed.SpeedTest$1.run(SpeedTest.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) Locked ownable synchronizers: - <0x00000000d6cb1dd8> (a java.util.concurrent.ThreadPoolExecutor$Worker) "pool-1-thread-7" #17 prio=5 os_prio=0 tid=0x0000000059650000 nid=0x154c waiting for monitor entry [0x000000005ab5f000] java.lang.Thread.State: BLOCKED (on object monitor) at code.example.base.util.concurrent.lock.speed.SyncSpeed.lockRun(SyncSpeed.java:6) - waiting to lock <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed) at code.example.base.util.concurrent.lock.speed.SpeedTest$1.run(SpeedTest.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) Locked ownable synchronizers: - <0x00000000d6cb1ae0> (a java.util.concurrent.ThreadPoolExecutor$Worker) "pool-1-thread-6" #16 prio=5 os_prio=0 tid=0x000000005964e000 nid=0x179c waiting for monitor entry [0x0000000059d0f000] java.lang.Thread.State: BLOCKED (on object monitor) at code.example.base.util.concurrent.lock.speed.SyncSpeed.lockRun(SyncSpeed.java:6) - waiting to lock <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed) at code.example.base.util.concurrent.lock.speed.SpeedTest$1.run(SpeedTest.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) Locked ownable synchronizers: - <0x00000000d6cb1838> (a java.util.concurrent.ThreadPoolExecutor$Worker) "pool-1-thread-5" #15 prio=5 os_prio=0 tid=0x000000005964d800 nid=0x2164 waiting for monitor entry [0x000000005ae5f000] java.lang.Thread.State: BLOCKED (on object monitor) at code.example.base.util.concurrent.lock.speed.SyncSpeed.lockRun(SyncSpeed.java:6) - waiting to lock <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed) at code.example.base.util.concurrent.lock.speed.SpeedTest$1.run(SpeedTest.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) Locked ownable synchronizers: - <0x00000000d6cb1590> (a java.util.concurrent.ThreadPoolExecutor$Worker) "pool-1-thread-4" #14 prio=5 os_prio=0 tid=0x000000005964c800 nid=0x105c waiting for monitor entry [0x000000005ac6e000] java.lang.Thread.State: BLOCKED (on object monitor) at code.example.base.util.concurrent.lock.speed.SyncSpeed.lockRun(SyncSpeed.java:6) - waiting to lock <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed) at code.example.base.util.concurrent.lock.speed.SpeedTest$1.run(SpeedTest.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) Locked ownable synchronizers: - <0x00000000d6cb12e8> (a java.util.concurrent.ThreadPoolExecutor$Worker) "pool-1-thread-3" #13 prio=5 os_prio=0 tid=0x0000000059649800 nid=0x1a54 waiting for monitor entry [0x000000005aa5f000] java.lang.Thread.State: BLOCKED (on object monitor) at code.example.base.util.concurrent.lock.speed.SyncSpeed.lockRun(SyncSpeed.java:6) - waiting to lock <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed) at code.example.base.util.concurrent.lock.speed.SpeedTest$1.run(SpeedTest.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) Locked ownable synchronizers: - <0x00000000d6cb1010> (a java.util.concurrent.ThreadPoolExecutor$Worker) "pool-1-thread-2" #12 prio=5 os_prio=0 tid=0x0000000059648800 nid=0x1c60 waiting for monitor entry [0x000000005a86e000] java.lang.Thread.State: BLOCKED (on object monitor) at code.example.base.util.concurrent.lock.speed.SyncSpeed.lockRun(SyncSpeed.java:6) - waiting to lock <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed) at code.example.base.util.concurrent.lock.speed.SpeedTest$1.run(SpeedTest.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) Locked ownable synchronizers: - <0x00000000d6cb0d68> (a java.util.concurrent.ThreadPoolExecutor$Worker) "pool-1-thread-1" #11 prio=5 os_prio=0 tid=0x0000000059648000 nid=0x2618 waiting for monitor entry [0x000000005a6bf000] java.lang.Thread.State: BLOCKED (on object monitor) at code.example.base.util.concurrent.lock.speed.SyncSpeed.lockRun(SyncSpeed.java:6) - waiting to lock <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed) at code.example.base.util.concurrent.lock.speed.SpeedTest$1.run(SpeedTest.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748)