`

线程 锁状态查看

 
阅读更多

 

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)

 

 

 

分享到:
评论

相关推荐

    java线程状态图

    java线程从新建到死亡所能经历的各种状态之间的流转。包括运行到阻塞、进入锁池、等待队列,全面而清晰的一张图

    java多线程编程总结

    Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程的调度-让步 Java线程:线程的调度-合并 Java线程:线程的调度-...

    Linux 线程间同步机制

    (1)在访问该资源前,首先申请该互斥锁,如果该互斥处于开锁状态,则申请到该锁对象,并立即占有该锁(使该锁处于锁定状态),以防止其它线程访问该资源;如果该互斥锁处于锁定状态,默认阻塞等待; (2)只有锁定...

    Java多线程编程总结

    Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程的调度-让步 Java线程:线程的调度-合并 Java线程:线程的...

    Java 线程状态、线程池

    同步代码需要获取对应的锁对象,如果锁对象被其他线程持有,则当前线程就会进入一个block状态,当当前线程持有锁对象时,进入RUNNABLE状态 WAITING(无线等待) 通过一个wait方法线程进入一个无线等待状态,需要另一...

    linux多线程编程

    二、线程的分离状态 12 三、线程的继承性 13 四、线程的调度策略 13 五、线程的调度参数 14 六、线程的作用域 16 七、线程堆栈的大小 17 八、线程堆栈的地址 18 九、线程栈末尾的警戒缓冲区大小 18 第三章 Posix有名...

    C++实现的可以安全的暂停、继续、停止线程的线程类和Sample

    在使用线程时,最麻烦的就是线程的同步控制,如暂停、继续、停止(包括暂停状态下)等。虽然微软提供了 SuspendThread、TerminateThread 等函数“似乎”可以完成这个功能,但如果你在代码里使用这些函数,则往往会...

    C++的线程读写锁(windows实现)

    /** * 读写锁 * 读-读并发,读-写互斥,写-写互斥 * Windows NT下可以使用 * 基于CRITICAL_SECTION实现,简单... * 直接加写锁才是写优先状态,采用尝试写是非写优先的 * @version 1.1 */ 附带有使用的例子……

    C#多线程读写sqlite

    多线程读写sqlite数据库,同步锁,计时测试读写性能,

    C++基于消息队列的多线程实现示例代码

    lock_guard 对象通常用于管理某个锁(Lock)对象,因此与 Mutex RAII 相关,方便线程对互斥量上锁,即在某个 lock_guard 对象的声明周期内,它所管理的锁对象会一直保持上锁状态;而 lock_guard 的生命周期结束之后,...

    java多线程 ppt

    线程的概念模型 线程的创建和启动 线程的状态控制 临界资源、对象锁和死锁 线程的互斥和同步

    Java 线程总结

    Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程的调度-让步 Java线程:线程的调度-合并 Java线程:线程的调度-...

    Linux系统编程之线程同步

    读写锁状态: 一把读写锁具备三种状态: 1. 读模式下加锁状态 (读锁) 2. 写模式下加锁状态 (写锁) 3. 不加锁状态 读写锁特性: 1. 读写锁是“写模式加锁”时, 解锁前,所有对该锁加锁的线程都会被阻塞。 2. ...

    python 多线程的同步机制 以python2例程的方式讲解了python 多线程的同步 常用的方法,主要是锁、条件同步、队列

     首先一个线程成功获得一个条件变量后,调用此条件变量的wait()方法会导致这个线程释放这个锁,并进入“blocked”状态,直到另一个线程调用同一个条件变量的notify()方法来唤醒那个进入“blocked”状态的线程。...

    java线程有关例题

    java线程 与动画相结合11.1 线程与线程类 11.2 线程的创建 11.3 线程的状态与调度 11.4 线程状态的改变 11.5 资源共享与对象锁 11.6 线程组

    java多线程安全性基础介绍.pptx

    多个线程操作共享对象导致的状态不一致问题 原因 共享资源的竞态条件问题 问题 竞态条件 指令重排序 工作内存中主内存同步延迟 解决 要有安全策略文档或注释 不共享 线程封闭 仅在单线程内访问数据 栈...

    关于多线程的个人总结.xmind

    关于多线程的个人总结,包括概念理解、创建线程、线程同步安全、各类锁、线程状态、并行并发、异步同步等

    c++调用PYthon线程状态

    为了支持多线程Python程序,当前线程在安全访问Python对象之前,必须持有全局锁(GIL,Global Interpreter Lock,全局解释器锁)。如果没有锁,多线程中甚至最简单的操作都会发生问题。例如,两个线程同时增加一个...

Global site tag (gtag.js) - Google Analytics