如果线程正在睡眠或等待,它是否还活着?什么会返回thread.isAlive()这两种情况下真的是假的吗?
答案 0 :(得分:2)
它仍然活着,只是没有运行。
测试此线程是否存活。如果一个线程已经启动并且还没有死亡,那么它就是活着的。
正在睡觉或等待的线程没有死亡(它没有正常或突然退出其run
方法),因此isAlive
将返回真。
当然,测试这个很容易:
public class Test {
public static void main(String[] args) throws Exception {
Runnable runnable = new Runnable() {
@Override public void run() {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
}
}
};
Thread thread = new Thread(runnable);
thread.start();
// Give the new thread plenty of time to really start
Thread.sleep(5000);
System.out.println(thread.isAlive());
}
}
答案 1 :(得分:0)
在调用start()方法时,线程被认为是活动的。 run()方法完成后,线程被认为不再存在。