【发布时间】:2016-01-27 09:46:51
【问题描述】:
CompletableFuture::supplyAsync(() -> IO bound queries)
如何为 CompletableFuture::supplyAsync 选择 Executor 以避免污染ForkJoinPool.commonPool()。
Executors 中有很多选项(newCachedThreadPool、newWorkStealingPool、newFixedThreadPool 等)
我读到了新的 ForkJoinPool here
如何为我的用例选择合适的?
【问题讨论】:
-
如果并发查询的数量将受到限制,您可以使用缓存线程池 - 如果数量可能非常高(几个 100 或 1000 或更多),您可以使用具有合理限制的固定线程池。答案取决于您的用例和参数(内存、操作系统等)。
-
这是我读过的关于 Executors 的最佳文章,来自 Jessica Kerr:blog.jessitron.com/2014/01/choosing-executorservice.html - 你应该阅读它。
-
只使用默认的(普通FJP)。如果您对这种方法有疑问,请提出新问题,具体说明您遇到的确切问题。如果你没有问题,那很好。
-
还有一点需要考虑的是不能关闭公共池。因此,如果您可能需要,您应该使用自己的
Executor。
标签: java java-8 executorservice threadpoolexecutor completable-future