a)假如是业务时间长集中在IO操作上,也就是IO密集型的任务,因为IO操作并不占用CPU,所以不要让所有的CPU闲下来,可以适当加大线程池中的线程数目,让CPU处理更多的业务 b)假如是业务时间长集中在计算操作上,也就是计算密集型任务,这个就没办法了,和(1)一样吧,线程池中的线程数设置得少一些,减少线程上下文的切换 ...
下面是一个CPU密集型任务的线程池示例代码: importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;publicclassCPUMain{publicstaticvoidmain(String[]args){intcpuCores=Runtime.getRuntime().availableProcessors();// 获取CPU核心数ExecutorServicecpuThreadPool=Executors.newFixedThreadPool(cpuCore...
IO密集型任务指任务需要执行大量的IO操作,涉及到网络、磁盘IO操作,对CPU消耗较少。 和线程池配置的关系 CPU密集型任务应配置尽可能小的线程,如配置CPU数目+1个线程的线程池。由于IO密集型任务线程并不是一直在执行任务,则应配置尽可能多的线程,如2*CPU数目。 参考: 《Java并发编程的艺术》...
多核CPU处理CPU密集型程序才合适,而且中间可能没有线程的上下文切换(一个核心处理一个线程)。 简单的说,就是需要CPU疯狂的计算。 IO密集型 IO密集型指的是系统的CPU性能相对硬盘、内存要好很多,此时,系统运作,大部分的状况是CPU在等I/O (硬盘/内存) 的读/写操作,但CPU的使用率不高。 所以用脚本语言像python...
CPU密集型和IO密集型与线程池的配置 CPU密集型任务应配置尽可能小的线程,如配置CPU数目+1个线程的线程池。由于IO密集型任务线程并不是一直在执行任务,则应配置尽可能多的线程,如2*CPU数目。
区别和使用: IO密集型:大量网络,文件操作 CPU 密集型:大量计算,cpu 占用越接近 100%, 耗费多个核或多台机器 业务要具体分析,假如CPU现在是10%,数据量增大一点点,CPU狂飙,那也可能CPU密集型。 如何确定线程池大小? 线程数不是越多越好。 由于CPU的核心数有限,线程之间切换也需要开销,频繁的切换上下文会使性能...
private int CPUCOUNT = Runtime.getRuntime().availableProcessors(); private ThreadPoolExecutor cpuExecutor = new ThreadPoolExecutor(CPUCOUNT, CPUCOUNT, 30, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>(), sThreadFactory); private ThreadPoolExecutor iOExecutor = new ThreadPoolExecutor(64, 64, ...
同学你好:CPU密集型线程池适合执行CPU密集型任务(对CPU消耗大的),IO密集型线程池适合执行IO密集型任务(对CPU消耗少,瓶颈在IO) 0 回复 提问者 逐梦稚者 #1 我搞不懂的是,都是ThreadPoolExecutor的子类,哪些是CPU密集型,哪些是IO密集型呢?我清楚ThreadPoolExecutor的构造方法每个参数的用法,只是不清楚这两个密...
【高级架构师精讲系列六】cpu密集型和io密集型的线程池应用( 线程池构成、 线程池构成、io密集型开源应用:nginx、cpu密集型开源应用:skynet)35 0 2022-11-03 21:54:35 未经作者授权,禁止转载 您当前的浏览器不支持 HTML5 播放器 请更换浏览器再试试哦~1...
CPU密集 CPU密集型的话,一般配置CPU处理器个数+/-1个线程,所谓CPU密集型就是指系统大部分时间是在做程序正常的计算任务,例如数字运算、赋值、分配内存、内存拷贝、循环、查找、排序等,这些处理都需要CPU来完成。 IO密集 IO密集型的话,是指系统大部分时间在跟I/O交互,而这个时间线程不......