主要观点总结
本文介绍了关于线程数量设置的讨论,包括CPU密集型程序、I/O密集型程序的线程数设置理论以及实际测试结果的分享。
关键观点总结
关键观点1: 线程数量与CPU利用率的关系
一个CPU核心在单位时间内只能执行一个线程的指令。过多的线程可能导致频繁的上下文切换,影响执行效率。通过调整线程数量,可以影响CPU的利用率。
关键观点2: I/O操作对CPU利用率的影响
在程序中插入I/O操作,如读写文件、网络收发报文等,可以充分利用CPU的空闲期,提高CPU的利用率。频繁的I/O操作可能导致CPU空闲时间增加,从而允许操作系统调度更多的线程执行。
关键观点3: 线程数规划的公式与实际应用的差异
在实际业务系统中,线程数的规划没有固定答案。需要结合实际场景和目标,通过测试来找到一个最合适的线程数。其他正在运行的进程和线程也会对CPU资源产生影响,因此需要综合考虑这些因素。
文章预览
线程到底设置数量多少合适 网上有很多文章说设置线程数的理论(个人不信): CPU密集型的程序 - 核心数 + 1 I/O密集型的程序 - 核心数 * 2 CPU利用率 在分析线程数之前,先说一个基本的理论: 一个CPU核心,单位时间内只能执行一个线程的指令 那么理论上,我一个线程只需要不停的执行指令,就可以跑满一个核心的利用率。 来写个死循环空跑的例子验证一下: public class CPUUtilizationTest { public static void main (String[] args) { //死循环,什么都不做 while ( true ){ } }} 运行这个例子后,来看看现在CPU的利用率: 从图上可以看到,我的3号核心利用率已经被跑满了 那基于上面的理论,我多开几个线程试试呢? public class CPUUtilizationTest { public static void main (String[] args) { for ( int j = 0 ; j < 6
………………………………