try( ExecutorService executorService = Executors.newVirtualThreadPerTaskExecutor() ) {
List<CompletableFuture<Void>> f = list.stream().map(item ->
CompletableFuture.runAsync(() -> {
try {
processOrder(item);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}, executorService)
).toList();
CompletableFuture.allOf(f.toArray(new CompletableFuture[0])).join();
}
使用 Executors.newVirtualThreadPerTaskExecutor() 作为 CompletableFuture.runAsync的 Executor 即可。对于老代码无痛更改