【发布时间】:2013-08-05 17:26:07
【问题描述】:
我尝试了一些示例代码:
Thread thread = new TestThread();
thread.start();
thread.isAlive();
在我看来,isAlive() 调用返回 false 的唯一方法是让线程已经完成。这是真的吗?
Java 7 JavaDoc 开始:
使该线程开始执行; Java 虚拟机调用该线程的 run 方法。 结果是两个线程同时运行:当前线程(从调用 start 方法返回)和另一个线程(执行它的 run 方法)。
多次启动一个线程是不合法的。特别是,线程一旦完成执行就可能不会重新启动。
isAlive 的 Java 7 JavaDoc:
测试这个线程是否还活着。如果线程已启动且尚未死亡,则该线程处于活动状态。
在我看来,这些都不是很有结论性的。
【问题讨论】:
-
您对“开始”的确切含义是什么?
-
在示例代码中,线程很可能已经死亡,因为它没有
Runnable。 -
@draksia 你怎么知道 TestThread 类中什么都没有?
-
@draksia 同意,但这更像是伪代码。我使用的实际测试代码涉及一些睡眠时间,这样我就可以在我几乎确定线程仍然活着时进行调用,反之亦然。
-
我的错误我以为它只是一个
Thread不是扩展版本。
标签: java multithreading