阅读量:0
join()
方法在 Java 中主要用于线程之间的协作。当一个线程调用另一个线程的 join()
方法时,调用 join()
方法的线程会被阻塞,直到被 join()
的线程执行完毕或者超过指定的等待时间。
join()
方法有两个版本:
public final void join(long millis) throws InterruptedException
这个版本的
join()
方法接受一个长整型参数millis
,表示等待的最长时间(以毫秒为单位)。如果在指定的时间内,被join()
的线程还没有执行完毕,那么调用join()
的线程会继续执行,不再等待。public final void join()
这个版本的
join()
方法不接受任何参数,表示无限期地等待被join()
的线程执行完毕。
示例:
class MyThread extends Thread { @Override public void run() { System.out.println("子线程开始执行"); try { Thread.sleep(2000); // 模拟子线程执行耗时操作 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("子线程执行完毕"); } } public class Main { public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.start(); // 启动子线程 try { myThread.join(); // 主线程调用子线程的 join() 方法,主线程会等待子线程执行完毕 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("主线程继续执行"); } }
输出结果:
子线程开始执行 主线程继续执行 子线程执行完毕
在这个示例中,主线程调用了子线程的 join()
方法,因此主线程会等待子线程执行完毕后再继续执行。