java如何等待多子线程全部执行完

java如何等待多子线程全部执行完

作者:Joshua Lee发布时间:2026-02-12阅读时长:0 分钟阅读次数:27

用户关注问题

Q
怎样让主线程等待所有子线程完成任务?

在Java中,我希望主线程能暂停执行,直到启动的所有子线程都执行完毕,应该怎样实现?

A

使用Thread.join()方法等待子线程完成

可以在主线程中调用每个子线程的join()方法,这样主线程会阻塞,直到对应的子线程终止。通过对所有子线程依次调用join(),确保所有线程执行结束后主线程才继续执行。

Q
有没有更简便的方式等待多个线程执行完毕?

如果有大量线程需要等待,使用join()方法会很繁琐,有没有Java提供的工具类可以简化这个过程?

A

使用CountDownLatch同步多个线程

Java提供了CountDownLatch类,可以初始化一个计数器为线程数,每个子线程执行完任务后调用countDown(),主线程调用await()阻塞,直到计数器为零,表示所有线程完成任务,主线程再继续。

Q
线程池中如何等待所有提交的任务完成?

如果使用ExecutorService提交了多个任务,需要等待它们全部完成再继续,应该怎么做?

A

调用ExecutorService的shutdown和awaitTermination方法

先调用shutdown()方法,表示不再接受新任务,然后调用awaitTermination()等待所有已提交的任务执行完毕。这样能确保线程池内所有任务完成后,主线程继续执行。