我有以下代码:
第一个任务异步创建了名为
我不喜欢这种方式,因为在等待N个任务完成时,一个线程会被锁定。
return CompletableFuture.supplyAsync(() -> {
return foo; // some custom object
})
.thenAccept(foo -> {
// ??? need to spawn N async parallel jobs that works on 'foo'
});
第一个任务异步创建了名为
foo
的对象,然后我需要在它上面运行N个并行进程。有没有更好的方法来完成这个任务呢?...
CompletableFuture[] parallel = new CompletableFuture[N];
for (int i = 0; i < N; i++) {
parallel[i] = CompletableFuture.runAsync(() -> {
work(foo);
});
}
CompletableFuture.allOf(parallel).join();
...
我不喜欢这种方式,因为在等待N个任务完成时,一个线程会被锁定。
CompletableFuture.allOf(parallel).join();
,当你不想等待完成时?没有人要求你等待... - Holger