首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ForkJoin与Java线程池的比较?

ForkJoin与Java线程池的比较?
EN

Stack Overflow用户
提问于 2021-11-01 18:47:30
回答 1查看 43关注 0票数 2

Java线程池已经被多次与ForkJoin中的其他“经典”线程池实现进行比较。不过,我的问题略有不同:

对于同时具有长时间运行、套接字处理、事务性线程和短时间运行任务(CompletableFuture)这两种线程使用类型的应用程序,我能否使用单个共享ForkJoin池?或者我必须经历为每种类型的需求维护两个单独的池的痛苦吗?换句话说,是否存在显著的(性能?)损失,如果在其他Java线程池实现足够的地方使用ForkJoin?

EN

回答 1

Stack Overflow用户

发布于 2021-11-01 23:49:37

根据documentation的说法,这取决于:

(3)除非使用ForkJoinPool.ManagedBlocker API,或者已知可能阻塞的任务数少于池的ForkJoinPool.getParallelism()级别,否则池不能保证有足够的线程可用来确保进度或良好的性能。

并行度与可用CPU核心的数量有关。因此,如果有足够的CPU核心,并且没有太多的阻塞I/O任务,那么您可以使用commonPool。然而,这并不意味着你应该这样做。首先,ForkJoinPool显然不是为长时间运行(阻塞)任务而设计的。另一方面,您可能希望在关机期间对长时间运行(阻塞)的任务执行一些操作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69801426

复制
相关文章

相似问题

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