Java Thread.join如何处理线程池中的任务

avatar
作者
猴君
阅读量:0

在Java中,Thread.join()方法用于等待一个线程执行完毕。如果你想在主线程中等待线程池中的某个任务执行完毕,可以使用ExecutorServicesubmit()方法提交任务,然后调用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()方法,主线程会等待这两个任务执行完毕。最后,记得关闭线程池。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!