isAlive vs加入JAVA线程

时间:2014-03-19 08:29:59

标签: java multithreading

存在两种确定线程是否已完成的方法。首先,您可以在线程上调用isAlive()。此方法由Thread定义,其一般形式如下所示:

final boolean isAlive()

如果调用它的线程仍在运行,则isAlive()方法返回true。否则返回false。虽然isAlive()偶尔会有用,但您更常用于等待线程完成的方法称为join()

isAlive() vs join()。优点

3 个答案:

答案 0 :(得分:2)

  

虽然isAlive()偶尔会有用,但您会更多   通常用于等待线程完成的称为join()

我不明白。根据您的原因,为什么join()isAlive()更常用?你有证据吗?

它们是为Thread类定义的两种不同方法:

isAlive()

  

测试此线程是否存活。如果一个线程已存在,则它是活动的   开始了,还没有死。

join()

  

等待此线程死亡。

一种方法执行检查,另一种方法等待线程死亡。

当你想要检查一个线程的生命周期而不等待时,你将使用isAlive(),它将返回一个关于线程状态的布尔值。

如果你想等待线程死亡,你将使用join()。意思是你想等待完成分配给线程的任务。

答案 1 :(得分:0)

如果要在Thread完成之前阻塞,请使用join()。否则 - 你决定。

如果你的逻辑没有阻止等待线程,那么我认为使用isAlive()可以实现更清晰的代码。只需看看你的代码,看看看起来更好。

答案 2 :(得分:0)

  

如果调用它的线程仍在运行,则isAlive()方法返回true。

这不完全正确 - public final boolean isAlive()

  

测试此线程是否存活。如果线程已经启动,则该线程仍处于活动状态并且尚未死亡。

这意味着,如果主题尚未开始,您可能会从false获得isAlive,而'加入'则等待其开始和< / strong>返回前完成。