今天闲来无事,研究了一下java线程的状态切换,发现一个匪夷所思的事情。
简单来说,就是Java官方文档描述与现实不符。
Java官方文档说,调用Thread.wait(timeout)方法时,线程会进入TIME_WAITING状态。
然而我写了一个测试例子,发现现实并非如此:
public class ThreadTest {
private final static Object object = new Object();
public static void main(String[] args) {
Thread thread = new Thread(new Task(), "thread-1");
thread.start();
}
private static class Task implements Runnable {
@Override
public void run() {
synchronized (object) {
try {
object.wait(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
运行代码,我从控制台看到的线程状态如下:
此事甚为蹊跷,到底是我错了,还是官方文档有误呢???