存在两种确定线程是否已完成的方法。首先,您可以在线程上调用isAlive()
。此方法由Thread
定义,其一般形式如下所示:
final boolean isAlive()
如果调用它的线程仍在运行,则isAlive()
方法返回true。否则返回false。虽然isAlive()
偶尔会有用,但您更常用于等待线程完成的方法称为join()
isAlive()
vs join()
。优点
答案 0 :(得分:2)
虽然isAlive()偶尔会有用,但您会更多 通常用于等待线程完成的称为join()
我不明白。根据您的原因,为什么join()
比isAlive()
更常用?你有证据吗?
它们是为Thread类定义的两种不同方法:
测试此线程是否存活。如果一个线程已存在,则它是活动的 开始了,还没有死。
等待此线程死亡。
一种方法执行检查,另一种方法等待线程死亡。
当你想要检查一个线程的生命周期而不等待时,你将使用isAlive()
,它将返回一个关于线程状态的布尔值。
如果你想等待线程死亡,你将使用join()
。意思是你想等待完成分配给线程的任务。
答案 1 :(得分:0)
如果要在Thread完成之前阻塞,请使用join()。否则 - 你决定。
如果你的逻辑没有阻止等待线程,那么我认为使用isAlive()可以实现更清晰的代码。只需看看你的代码,看看看起来更好。
答案 2 :(得分:0)
如果调用它的线程仍在运行,则isAlive()方法返回true。
这不完全正确 - public final boolean isAlive()
测试此线程是否存活。如果线程已经启动,则该线程仍处于活动状态并且尚未死亡。
这意味着,如果主题尚未开始,您可能会从false
获得isAlive
,而'加入'则等待其开始和< / strong>返回前完成。