首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CompletableFuture.runAsync与CompletableFuture数组

CompletableFuture.runAsync与CompletableFuture数组
EN

Stack Overflow用户
提问于 2020-02-17 23:41:07
回答 1查看 249关注 0票数 0

我在一个项目中发现了以下代码:

代码语言:javascript
复制
int threadCount = 10;
CompletableFuture<?>[] futures = new CompletableFuture<?>[threadCount];
for (int i = 0; i < threadCount; i++) {
    futures[i] = CompletableFuture.runAsync(() -> { process.run(queue); });
}
// Wait all futures
CompletableFuture.allOf(futures).join();

这样做有什么区别呢?

代码语言:javascript
复制
ExecutorService threadPool = Executors.newFixedThreadPool(threadCount);
CompletableFuture.runAsync(() -> { process.run(queue); }, threadPool );

谢谢你的解释。

EN

回答 1

Stack Overflow用户

发布于 2020-02-20 01:27:25

代码语言:javascript
复制
int threadCount = 10;
CompletableFuture<?>[] futures = new CompletableFuture<?>[threadCount];
for (int i = 0; i < threadCount; i++) {
    futures[i] = CompletableFuture.runAsync(() -> { process.run(queue); });
}
// Wait all futures
CompletableFuture.allOf(futures).join();

在本例中,您创建了一组可完成未来,它们是在公共ForkJoin池中执行异步代码的结果。然后流程等待,直到所有的期货都完成。

代码语言:javascript
复制
ExecutorService threadPool = Executors.newFixedThreadPool(threadCount);
CompletableFuture.runAsync(() -> { process.run(queue); }, threadPool );

在这种情况下,您将在指定的线程池中执行代码。

这些代码块之间的差异

  • 它们在不同的线程池中执行(第一个在通用ForkJoin中,这是可完成的未来的默认设置,第二个在指定的线程池中)
  • 在第一种情况下,您正在等待一组要完成的任务,在第二种情况下,您只需运行task tasks
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60265870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档