线程池调优秘籍:核心线程数与队列大小的黄金比例,90%的人都不知道
线程池调优秘籍:核心线程数与队列大小的黄金比例,90%的人都不知道! 公众号:服务端技术精选 嗨,各位后端大佬们!今天咱们来聊个面试常考、工作常用,但一不小心就踩坑的话题——线程池的参数优化。 你是不是也遇到过这种情况:系统平时跑得好好的,一到高峰期就卡成PPT?或者明明CPU利用率不高,任务却堆积如山?别怀疑,可能就是线程池的核心线程数和队列大小没配好! 一、线程池是个啥?用餐厅来打个比方 咱们把线程池比作一家餐厅: 核心线程数 = 固定在岗的服务员(不管有没有顾客都在店里待命) 队列大小 = 等候区的座位(顾客太多时,先在这儿排队等着) 最大线程数 = 店里能容纳的最多服务员(固定服务员不够时,临时叫兼职) 如果配置不合理会咋样? 服务员太少(核心线程数不足),顾客(任务)就得在等候区排长队 等候区太大(队列容量太大),顾客等太久可能直接走人(任务超时) 二、核心线程数怎么设?记住这两个公式 1. CPU密集型任务(比如大数据计算) 公式:核心线程数 = CPU核心数 + 1 举个栗子:4核CPU就设5个核心线程 为啥?因为CPU密集型任务主要吃计算资源,线程多了反而会导....