我有以下线程转储,我使用jstack,并想知道单词runnable
旁边的十六进制值显示什么。我看到在其他地方使用的相同值显示为:
waiting on condition [0x00000000796e9000]
这是否意味着其他线程正在等待此线程?
runnable [0x00000000796e9000]
线程转储
"ajp-bio-8009-exec-2925" daemon prio=10 tid=0x0000000015ca7000 nid=0x53c7 runnable [0x00000000796e9000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:152)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
答案 0 :(得分:1)
我有以下线程转储,我使用jstack并希望 知道runnable这个单词旁边的十六进制值是什么。我见过 显示为:
的其他地方使用的相同值等待条件[0x00000000796e9000]
这是否意味着其他线程正在等待此线程?
是。这表示一个线程持有锁,另一个线程正在等待获取该锁。这在概念上非常类似于synchronized关键字,但可以更强大(也更复杂)。 查看condition的javadoc以更好地了解条件。
这个question/answer给出了线程转储(对于java 6)中的属性的描述。