线程 锁状态查看

jstack 进程号,打出线程运行情况:

java.lang.Thread.State: BLOCKED (on object monitor)--说明线程阻塞的
 

BLOCKED  是由于synchronized 锁引起的。 

  - waiting to lock <0x00000000d6c8e750> (a code.example.base.util.concurrent.lock.speed.SyncSpeed)
    说明阻塞是等待这个锁。

  那么谁持有这个锁呢?

"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)
这个线程持有这个锁,并且是运行状态。
"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)

猜你喜欢

转载自java12345678.iteye.com/blog/2399202