线程A 成功获取 Monitor 线程B 等待 线程B 尝试获取 Monitor 线程B 处于等待状态 线程A 释放 Monitor 线程A 释放 Monitor 线程B 获取 Monitor 线程B 成功获取 Monitor Monitor 对象的获取过程 此外,为了理解 monitor 的数据结构,以下是一个简单的关系图。 erDiagram Synchronized
Found one Java-level deadlock:=== "B":waiting to lock monitor 0x000000014980eec0 (object 0x000000076ac71460, a java.lang.Object),which is held by "A""A":waiting to lock monitor 0x0000000149810360 (object 0x000000076ac71470, a java.lang.Object),which is held by "B"Java stack infor...
"Thread-1" #28 [25091] prio=5 os_prio=31 cpu=13.87ms elapsed=24.40s tid=0x00007fceea86d000 nid=25091 waiting for monitor entry [0x0000700010268000] java.lang.Thread.State: BLOCKED (on object monitor) at com.funtest.temp.ImmutablePerson$_main_closure2.doCall(ImmutablePerson.groovy:35) - ...
"Thread-1" #12 prio=5 os_prio=0 tid=0x000000001c1a1000 nid=0x2af4 waiting for monitor entry [0x000000001ce2f000] java.lang.Thread.State: BLOCKED (on object monitor) at com.liu.demo.test.thread.DeadLockTest$2.run(DeadLockTest.java:36) - waiting to lock <0x00000000d60ba308> (a j...
FoundoneJava-leveldeadlock: === "T-ShortConn-4": waitingtolockmonitor0x00007f87e1d95718(object0x00000006cc86c090,ajava.lang.Class), whichisheldby"T-ShortConn-0" "T-ShortConn-0": waitingtolockmonitor0x00007f875c00f188(object0x00000006c6f34238,ajava.util.concurrent.ConcurrentHashMap), whic...
waiting to lock monitor 0x000000001c774548 (object 0x000000076bbc06f8, a java.lang.Object), which is held by "Thread-1" 回到顶部 deadlock demo及deadlock信息 上代码: importjava.util.concurrent.ConcurrentHashMap;importstaticjava.util.concurrent.TimeUnit.SECONDS;publicclassTestDeadlockMain {private...
RUNNABLE"Thread-1"#11prio=5os_prio=31tid=0x00007f917c102000nid=0x4203waitingformonitor entry[0x0000700010f6b000]java.lang.Thread.State:BLOCKED(on object monitor)at com.kotlin.notes.DeadLockKt$usingSynchronized$t2$1.run(DeadLock.kt:31)-waiting to lock<0x00000007956f92b8>(a com.kotlin.notes....
publicclassDeadLockSampleextendsThread{privateString first;privateString second;publicDeadLockSample(String name,String first,String second){super(name);this.first=first;this.second=second;}/** * @see java.lang.Thread#run() */@Overridepublicvoidrun(){synchronized(first){System.out.println(this.get...
状态是够消耗 CPU描述RUNNABLE不确定运行中 或者 就绪WAITING不消耗1. object monitor 2. unparkTIME_WAITING不消耗1. object monitor 2. unpark 3. sleepBLOCKED不消耗object monitor 2. Java 线程栈 线程栈是问题的第一现场,从线程栈中可以获得很多日志以外的瞬时信息。
Found one Java-level deadlock: === "pool-1-thread-1": waiting to lock monitor 0x000000005fcf5680 (object 0x00000007590e6b48, a sun.misc.Launcher$AppClassLoader), which is held by "main" "main": waiting to lock monitor 0x000000005fcf4180...