gpt4 book ai didi

java - CompletableFuture supplyAsync(供应商)与 supplyAsync(供应商,执行者)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:33:13 27 4
gpt4 key购买 nike

Java 文档说 CompletableFuture:supplyAsync(Supplier<U> supplier)ForkJoinPool#commonPool() 中运行任务而 CompletableFuture:suppleAsync(supplier, executor)在给定的执行程序中运行它。

我正在尝试找出使用哪一个。所以我的问题是:

  1. 什么是 ForkJoinPool#commonPool()
  2. 什么时候应该使用 supplyAsync(supplier)对比supplyAsync(supplier, executor)

最佳答案

ForkJoinPool#commonPool() 是 Java API 提供的公共(public)线程池。如果你曾经使用过stream API ,那么并行操作也在这个线程池中完成。

使用公共(public)线程池的优势在于 Java API 会为您管理它 - 从创建到销毁。缺点是您会期望很多类共享此池的使用。

如果您使用了一个执行器,那么它就像拥有一个私有(private)池一样,所以没有什么可以与您争夺使用权。您自己创建执行器,并将其传递给 CompletableFuture。但是,请注意,最终实际性能仍将取决于线程中以及您的硬件正在执行的操作。

一般来说,我发现使用公共(public)线程池来做更多计算密集型的事情是很好的,而 executor 更适合做那些必须等待的事情(比如 IO)。当您在公共(public)线程池线程中“hibernate ”时,就像使用公共(public)洗手间的小隔间玩手机游戏一样——其他人可能正在等待小隔间。

关于java - CompletableFuture supplyAsync(供应商)与 supplyAsync(供应商,执行者),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49441261/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com