线程状态的疑问

546144153 2012-09-18
"taserverThreadPool-exec-2" prio=10 tid=0x00007f90cb82a000 nid=0x5b7a in Object.wait() [0x00000000431cb000]
   java.lang.Thread.State: RUNNABLE


为何一个in object.wait()的线程却处于RUNNABLE状态呢?不是应该处于waiting态吗?
RednaxelaFX 2012-09-22
请问这是什么版本的JDK?在什么平台上?最好能具体一些
546144153 2012-09-24
RednaxelaFX 写道
请问这是什么版本的JDK?在什么平台上?最好能具体一些


java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)
1.6.24 java 64位suse系统。
撒加太敬业了,感谢。
RednaxelaFX 2012-09-24
如果我没记错的话这是个已知问题,在一个线程进到Object.wait()之后有好几个不同级别的flag需要变更状态,但这些变更不是原子的,所以有很小机会看到状态的不一致。

请问您遇到的这个情况会经常重现么?还是只是很偶尔出现了一次但再也没见到了?

我一时找不到以前我自己发的提到这个问题的邮件了…
怀疑跟这个是同类问题:http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/2012-July/004106.html
546144153 2012-09-25
当时进程有问题,线程高服务不正常,当时dump出来的线程状态比较奇怪。
我今天又重新去jstack了几下,貌似没发现这种情况了。
Global site tag (gtag.js) - Google Analytics