在Java中,Thread.join()
方法用于等待一个线程执行完毕。如果你想在主线程中等待线程池中的某个任务执行完毕,可以使用ExecutorService
的submit()
方法提交任务,然后调用Future.get()
方法等待任务完成。
下面是一个简单的示例:
import java.util.concurrent.*; public class ThreadPoolJoinExample { public static void main(String[] args) { // 创建一个固定大小的线程池 ExecutorService executorService = Executors.newFixedThreadPool(3); // 提交任务到线程池 Future> future1 = executorService.submit(() -> { System.out.println("Task 1 is running"); try { // 模拟任务执行耗时 Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Task 1 is completed"); }); Future> future2 = executorService.submit(() -> { System.out.println("Task 2 is running"); try { // 模拟任务执行耗时 Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Task 2 is completed"); }); // 等待线程池中的任务执行完毕 try { future1.get(); future2.get(); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } // 关闭线程池 executorService.shutdown(); } }
在这个示例中,我们创建了一个固定大小的线程池,并提交了两个任务。通过调用future1.get()
和future2.get()
方法,主线程会等待这两个任务执行完毕。最后,记得关闭线程池。