Java Thread join() 方法



描述

Java Thread join(long millis, int nanos) 方法最多等待 millis 毫秒加上 nanos 纳秒,直到该线程结束。

声明

以下是 java.lang.Thread.join() 方法的声明

public final void join(long millis, int nanos) throws InterruptedException

参数

  • millis - 这是要等待的毫秒数。

  • nanos - 这是要额外等待的 999999 纳秒。

返回值

此方法不返回值。

异常

  • IllegalArgumentException - 如果 millis 的值为负数,或者 nanos 的值不在 0-999999 范围内。

  • InterruptedException - 如果任何线程中断了当前线程。当抛出此异常时,当前线程的中断状态将被清除。

示例:使线程等待

以下示例演示了 Java Thread join() 方法的使用。在此程序中,我们通过实现 Runnable 接口创建了一个线程类 ThreadDemo。在构造函数中,使用 currentThread() 方法获取当前线程。打印其名称,并使用 isAlive() 检查线程是否处于活动状态。

在 main 方法中,我们使用 ThreadDemo 创建了一个线程,并使用 start() 方法启动线程。现在,使用 join() 使线程等待给定的时间段,然后打印线程名称,并再次使用 isAlive() 打印其处于活动状态。

package com.tutorialspoint;

public class ThreadDemo implements Runnable {

   public void run() {

      Thread t = Thread.currentThread();
      System.out.print(t.getName());
      
      //checks if this thread is alive
      System.out.println(", status = " + t.isAlive());
   }

   public static void main(String args[]) throws Exception {

      Thread t = new Thread(new ThreadDemo());
      
      // this will call run() function
      t.start();
      /* waits at most 2000 milliseconds plus 500 nanoseconds for
         this thread to die */
      t.join(2000, 500);
      System.out.println("after waiting for 2000 milliseconds plus 500 nanoseconds ...");
      System.out.print(t.getName());
      
      //checks if this thread is alive
      System.out.println(", status = " + t.isAlive());
   }
} 

输出

让我们编译并运行上述程序,这将产生以下结果:

Thread-0, status = true
after waiting for 2000 milliseconds plus 500 nanoseconds ...
Thread-0, status = false
java_lang_thread.htm
广告