import java.util.concurrent.*;
ThreadPoolExecutor THREAD_POOL_EXECUTOR =
new ThreadPoolExecutor(
(int) Math.floor(4),
4, 60,
TimeUnit.SECONDS, new LinkedBlockingQueue<>(),
Executors.defaultThreadFactory());
List<CompletableFuture<Void>> futures = new CopyOnWriteArrayList<>();
for (int i = 0; i < 10; i++) {
int finalI = i;
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
System.out.println(Thread.currentThread().getName() + "执行了:" + finalI);
}, THREAD_POOL_EXECUTOR);
futures.add(future);
}
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
System.out.println("执行完毕");
THREAD_POOL_EXECUTOR.shutdown();