考虑以下代码:
class ThreadJoinTest{
public static void main(String[] arguments){
TimeUnit unit;
final Thread taskThread = new Thread(task);
taskThread.start();
taskThread.join(unit.millis(timeout));
}
}
因此,当主线程执行带有超时值的
taskThread.join()
行时,主线程是否给taskThread
足够的时间来完成其任务?这是join方法的主要目标吗?如果发生以下情况,将发生什么情况:
taskThread
在超时期限之前完成执行? taskThread
尚未完成执行,该怎么办? taskThread
是否有机会完成其任务? taskThread
正常完成或已达到超时而返回的联接? 最佳答案
一旦main
被启用,
taskThread
将被允许再次启动完毕。
main
重新开始,并且taskThread
将继续。两个线程都将被允许结束。 taskThread
正常完成或超时,则main将继续执行。 main
无法知道超时是否发生,或者taskThread
是否在不使用其他通信方式的情况下完成执行。 关于java - Thread类的join()方法如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11493199/