求大佬讲解
1
jorneyr 2019-12-26 17:30:49 +08:00
synchronized 的关联的对象,lock 对象
|
2
lihongjie0209 2019-12-26 18:07:04 +08:00 2
啥? 多个线程持有的 '锁' 还叫锁吗?
|
3
apostle 2019-12-26 18:17:04 +08:00 via Android
@lihongjie0209 读写锁:我不配当锁啦
|
4
luckyrayyy 2019-12-26 18:25:50 +08:00
自带的分析工具就可以,比如 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 对象是谁,这里的例子就是两个对象,因为这里的例子是分别持有对方的锁,如果是同一个对象就是同一个锁了。 |
5
luozic 2019-12-26 18:32:13 +08:00
這個判斷是指人的判斷,還是 Java 程序内部判斷?
|
6
phantomzz 2019-12-26 19:45:35 +08:00
建议 “持有” --> "竞争"
|
7
yinaqu 2019-12-27 10:02:18 +08:00
使用 Thread 提供的静态方法 holdsLock(Object obj)可以判断当前线程是否持有所传参数的对象锁。
|