- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
Java 文档说 CompletableFuture:supplyAsync(Supplier<U> supplier)
在 ForkJoinPool#commonPool()
中运行任务而 CompletableFuture:suppleAsync(supplier, executor)
在给定的执行程序中运行它。
我正在尝试找出使用哪一个。所以我的问题是:
ForkJoinPool#commonPool()
?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/
所以我有一个排行榜,我每天使用以下查询有效地获取每个用户的分数: SELECT DATE(a.time) as time, a.userid, SUM(activity_weight) as weig
假设我有一个 ExecutorService(它可以是一个线程池,因此涉及到并发性),它在不同的时间执行一个任务,或者周期性地或者响应一些其他条件。要执行的任务如下: 如果此任务已在进行中,则什么也不
我正在运行的服务器应用程序收到多个任务请求,我想使用任务系统处理这些请求。 每个任务都表示为一个 Runnable,它将从线程池中请求 n 个线程,其中 n 小于或等于线程池大小。为了不线程过多导致
我有一个 long_task 函数,它运行大量 cpu 绑定(bind)计算,我想通过使用新的 asyncio 框架使其异步。生成的 long_task_async 函数使用 ProcessPoolE
Java 文档说 CompletableFuture:supplyAsync(Supplier supplier)在 ForkJoinPool#commonPool() 中运行任务而 Completa
我想了解 Spark Streaming 中的一个基本知识。我有 50 个 Kafka 主题分区和 5 个执行程序,我使用的是 DirectAPI,所以没有。 RDD 分区的数量将为 50。如何在 5
我的问题与 this one here 密切相关.正如在那里发布的那样,我希望主线程等到工作队列为空并且所有任务都已完成。然而,我的情况的问题是,每个任务都可能递归地导致提交新任务进行处理。这使得收集
我是一名优秀的程序员,十分优秀!