网站公司倒闭,专业做冻货的网站,校园网站建设目标,seo企业网站源码多线程如何合理的配置核心线程数#xff1f;
对于 CPU 密集型任务#xff0c;由于 CPU 密集型任务的性质#xff0c;导致 CPU 的使用率很高#xff0c;如果使用线程池中的核心线程数量过多#xff0c;会增加上下文切换的次数#xff0c;带来额外的开销。因此#xff0c…多线程如何合理的配置核心线程数
对于 CPU 密集型任务由于 CPU 密集型任务的性质导致 CPU 的使用率很高如果使用线程池中的核心线程数量过多会增加上下文切换的次数带来额外的开销。因此考虑到 CPU 密集型任务因为某些原因而暂停这个时候有额外的线程能确保 CPU 这个时候不会浪费还可以增加一个 CPU 上下文切换。
一般情况下线程池的核心线程数量等于 CPU 核心数 1。例如需要大量的计算视频渲染仿真等等。这个时候 CPU 就卯足了劲运行这个时候切换线程反而浪费了切换的时间效率不高。打个比方你的大脑是 CPU你本来就在一本心思地写作业多线程这时候就是要你写回作业然后敲会代码然后在看个视频然后在切换回作业。
对于 I/O 密集型任务由于I/O 密集型任务 CPU 使用率并不是很高可以让 CPU 在等待 I/O 操作的时候去处理别的任务充分利用 CPU。
一般情况下线程的核心线程数量等于 2*CPU 核心数。例如你需要陪小姐姐聊天还需要下载一个 IDEA还需要看博客。打个比方小姐姐给你发消息了回一下她然后呢她给你回消息肯定需要时间这个时候你就可以下载 IDEA下载完一看她还没有回消息然后看会博客。小姐姐终于回你了你回一下然后接着看博客这就是类似于 I/O 密集型。你可以在不同的“不烧脑” 的工作之间切换来达到更高的效率。而不是小姐姐不回你你就干等着说不定小姐姐根本不会回复你。
对于混合型任务由于包含 2 种类型的任务故混合型任务的线程数和线程时间有关。在某种特定的情况下还可以将任务分为 I/O 密集型任务和 CPU 密集型任务分别让不同的线程池去处理。
一般情况下线程池的核心线程数 线程等待时间/线程 CPU 时间 1 CPU 核心数*。