线程状态的疑问
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了几下,貌似没发现这种情况了。 |