考虑以下代码:

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/

    10-09 05:00