• 请不要在回答技术问题时复制粘贴 AI 生成的内容
michaelxuan
V2EX  ›  程序员

在 Java 中如何判断多个线程持有的是同一把锁

  •  
  •   michaelxuan · Dec 26, 2019 · 3792 views
    This topic created in 2505 days ago, the information mentioned may be changed or developed.

    求大佬讲解

    7 replies  •  2019-12-27 10:02:18 +08:00
    jorneyr
    jorneyr
    Dec 26, 2019
    1
    synchronized 的关联的对象,lock 对象
    lihongjie0209
    lihongjie0209
    Dec 26, 2019❤️2
    2
    啥? 多个线程持有的 '锁' 还叫锁吗?
    apostle
    apostle
    Dec 26, 2019 via Android
    3
    @lihongjie0209 读写锁:我不配当锁啦
    luckyrayyy
    luckyrayyy
    Dec 26, 2019
    4
    自带的分析工具就可以,比如 jstack,我找了一个博客上教程的输出结果:
    ```
    Found one Java-level deadlock:
    =============================

    "Thread-1":
    waiting to lock Monitor@0x00007fea1900f6b8 (Object@0x00000007efa684c8, a java/lang/Object),
    which is held by "Thread-0"
    "Thread-0":
    waiting to lock Monitor@0x00007fea1900ceb0 (Object@0x00000007efa684d8, a java/lang/Object),
    which is held by "Thread-1"

    作者:江溢 Jonny
    链接: https://juejin.im/post/5aaf6ee76fb9a028d3753534
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



    就可以看出来 lock 对象是谁,这里的例子就是两个对象,因为这里的例子是分别持有对方的锁,如果是同一个对象就是同一个锁了。
    luozic
    luozic
    Dec 26, 2019
    5
    這個判斷是指人的判斷,還是 Java 程序内部判斷?
    0NF09LJPS51k57uH
    0NF09LJPS51k57uH
    Dec 26, 2019
    6
    建议 “持有” --> "竞争"
    yinaqu
    yinaqu
    Dec 27, 2019
    7
    使用 Thread 提供的静态方法 holdsLock(Object obj)可以判断当前线程是否持有所传参数的对象锁。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2951 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 12:46 · PVG 20:46 · LAX 04:46 · JFK 07:46
    ♥ Do have faith in what you're doing.