怎么设置线程池的核心线程数大小
2023-12-19 23:24:00
程序员的公众号:源1024,获取更多资料,无加密无套路!
最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》,《Java并发编程实战》等等
获取方式: 关注公众号并回复 电子书 领取,更多内容持续奉上
线程池的核心线程数(corePoolSize),当 allowCoreThreadTimeOut 为 false 时, 核心线程会一直存活, 哪怕是一直空闲着 。而当 allowCoreThreadTimeOut 为 true时核心线程空闲时间超过 keepAliveTime 时会被回收。
核心线程数大小,需要分析线程池执行的任务的特性:CPU 密集型还是 IO 密集型
-
CPU密集型任务
主要是执行计算任务, 响应时间很快, cpu 一直在运行, 这 种任务 CPU 的利用率很高, 那么线程数的配置应该根据 CPU 核心数来决定,?尽量使用较小的线程池,一般为CPU核心数+1。因为CPU密集型任务使得CPU使用率很高,若开过多的线程数,会造成CPU过度切换。
-
IO密集型任务
像 MySQL 数据库、文件的读写等任务,主要是进行 IO 操作, 执行 IO 操作的时间较长, CPU处于空闲状态, 导致?CPU的利用率不高, 这种情况下可以增加线程池的大小,结合线程的等待时长来判断, 等待时间越长, 那么线程数也相对越多 。一般可以设置为?2*CPU核心数?。可以让CPU在等待IO的时候有其他线程去处理别的任务,充分利用CPU时间。
总结
线程的平均工作时间所占比例越高,就需要越少的线程。
线程的平均等待时间所占比例越高,就需要越多的线程。
?系列文章索引
?
文章来源:https://blog.csdn.net/feikillyou/article/details/135094928
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!