3

我有以下使用 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)
4

1 回答 1

1

我有以下使用 jstack 获得的线程转储,并且想知道单词 runnable 旁边的十六进制值显示什么。我已经看到其他地方使用的相同值显示为:

等待条件 [0x00000000796e9000]

这是否意味着其他线程正在等待该线程?

是的。这表明一个线程持有一个锁,而另一个线程正在等待获取该锁。这在概念上与 synchronized 关键字非常相似,但可能更强大(也更复杂)。查看条件的 javadoc以更好地理解条件。

这个问题/答案给出了线程转储中属性的描述(对于 java 6)。

于 2014-05-24T13:22:27.980 回答