首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多线程池如何竞争CPU资源?

多线程池如何竞争CPU资源?
EN

Stack Overflow用户
提问于 2021-12-13 07:40:13
回答 1查看 278关注 0票数 1

我想知道多个线程池如何在Java中竞争CPU资源?我有多个线程池,用于不同的任务。如果我的CPU有N个核心,并且我为每个线程池分配了N个最大线程。

  • 如果所有线程池同时开始它们的任务,这是否意味着它们将一起竞争CPU资源?
  • 如何相互竞争?每个线程是否在一段时间内保存CPU资源?或者每个线程池是否在一段时间内保存CPU资源?

拥有不同任务的不同线程池的好处是服务不会被饿死。同时,这是否意味着更多的线程池会导致更多的上下文切换,并使程序变得更慢?

一般来说,拥有多个线程池比单个线程池的设计更好吗?

EN

回答 1

Stack Overflow用户

发布于 2021-12-13 08:48:24

每个线程池包含一组工作线程,这些线程试图从任务队列中获取任务并执行它们,操作系统将对所有线程进行schedule。没有像each thread pool holding the CPU resource for a period of time这样的东西。

如果线程池的任务队列为空,则此线程池中的所有保持活动(corePoolSize)工作线程将在workQueue.take()方法上被阻塞,并等待新任务(线程进入WAITING状态)。

不同的线程池适用于不同类型的任务。例如,Executors#newCachedThreadPool适用于许多短暂的异步任务.您应该为不同类型的任务自定义不同的线程池。

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

https://stackoverflow.com/questions/70331293

复制
相关文章

相似问题

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