什么时候真的活着java中的一个线程?

时间:2013-12-28 22:52:44

标签: java multithreading

如果线程正在睡眠或等待,它是否还活着?什么会返回thread.isAlive()这两种情况下真的是假的吗?

2 个答案:

答案 0 :(得分:2)

它仍然活着,只是没有运行。

来自documentation

  

测试此线程是否存活。如果一个线程已经启动并且还没有死亡,那么它就是活着的。

正在睡觉或等待的线程没有死亡(它没有正常或突然退出其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()方法完成后,线程被认为不再存在。

Citation