可以使用ExecutorService配合CountDownLatch来实现等待所有线程执行完毕再执行后续方法的效果。具体的步骤如下:

  1. 创建一个ExecutorService对象,用于管理线程池。
  2. 创建一个CountDownLatch对象,用于等待所有线程执行完毕。
  3. 使用循环将任务提交给线程池执行,在每个任务执行完毕后,调用CountDownLatchcountDown()方法,表示一个线程已经执行完毕。
  4. 在所有任务提交完毕后,调用CountDownLatchawait()方法,等待所有线程执行完毕。
  5. 所有线程执行完毕后,即可执行后续的方法。

下面是一个示例代码:

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Example {
    public void parallelExecution() {
        int threadCount = 5; // 线程数量

        ExecutorService executorService = Executors.newFixedThreadPool(threadCount);
        CountDownLatch countDownLatch = new CountDownLatch(threadCount);

        for (int i = 0; i < threadCount; i++) {
            executorService.submit(() -> {
                // 执行任务
                // ...

                countDownLatch.countDown(); // 当前线程执行完毕,计数器减1
            });
        }

        try {
            countDownLatch.await(); // 等待所有线程执行完毕
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        // 所有线程执行完毕,执行后续方法
        // ...
        
        executorService.shutdown(); // 关闭线程池
    }
}

在上述示例代码中,通过ExecutorService创建一个固定大小的线程池,并使用CountDownLatch来等待所有线程执行完毕。在每个线程执行完毕后,调用countDownLatch.countDown()方法,表示一个线程已经执行完毕。在所有线程提交完毕后,调用countDownLatch.await()方法等待所有线程执行完毕。当所有线程执行完毕后,即可执行后续的方法。最后,记得关闭线程池

Java中我有一个方法是通过循环线程submit执行我想等所有线程执行完再执行后续的方法

原文地址: http://www.cveoy.top/t/topic/iJJd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录