首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java ExecutorService

Java ExecutorService
EN

Stack Overflow用户
提问于 2016-11-24 05:41:19
回答 2查看 512关注 0票数 3

如何使用ExecutorService,以便在应用程序级别为应用程序创建一个中心线程池,该应用程序的池大小将根据当时CPU可用的线程数来设置,然后应用程序的不同功能将根据它们的需要从这个中心池中使用线程。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-30 09:58:00

贝娄是我的观点:

  • 中央线程池? 也许,可以说是单例模式设计模式,我认为它可以解决您的问题;
  • 根据CPU可用的线程数设置? 线程池的大小并不准确。实际上,大小取决于线程池执行任务的类型。例如,如果任务是Runtime.getRuntime().availableProcessors() + 1 CPU密集型,则大小可以是Runtime.getRuntime().availableProcessors() * 2;如果任务是I/O密集型.But,则为Runtime.getRuntime().availableProcessors() * 2--这些只是基本原则,您应该通过使用一些指南(例如)来测试应用程序来确定适当的大小;
  • 我建议: 在实践中,我很少将所有任务提交到一个中心的三个线程池中,也许应该按类型将任务分组,将它们提交到不同的线程池,这将便于以后监视或调整线程池。

希望能帮助你。

票数 1
EN

Stack Overflow用户

发布于 2016-11-24 13:29:56

从Java 8开始,我建议您使用ForkJoinPool.commonPool()。这是基础Java提供的唯一全局线程池。

在Java 8之前,要么保留自己的线程池,要么使用框架的可共享线程池。

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

https://stackoverflow.com/questions/40778776

复制
相关文章

相似问题

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