假设一个Java线程执行一些I/O操作,比如用传统的阻塞Java I/O读取文件。
问题是:当等待时,线程的状态是什么?
我不知道它是运行中(进行某种主动等待)还是等待中(也许有一种监视器在文件数据准备好时唤醒线程)。
我该如何找出来?
谢谢。
问题是:当等待时,线程的状态是什么?
我不知道它是运行中(进行某种主动等待)还是等待中(也许有一种监视器在文件数据准备好时唤醒线程)。
我该如何找出来?
谢谢。
其他可能的线程状态更加严格地规定了,并且各自的规范使它们显然不适用。
public static final Thread.State RUNNABLE
可运行线程的线程状态。 处于可运行状态的线程正在Java虚拟机中执行,但它可能正在等待来自操作系统的其他资源(例如处理器)。
public class Test {
public static void main(String[] args) throws Exception {
Thread t = new Thread(new Runnable() {
public void run() {
try {
while (true) {
System.in.read(); // Block for input
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
t.start();
while (true) {
System.out.println("State: " + t.getState());
Thread.sleep(1000);
}
}
}
我该怎么找出来呢?