我认为的线程池预热就是让核心线程都处于 running 的状态,请问这样理解正确吗?为什么要预热呢?
1
xuanbg 2020-05-14 11:50:41 +08:00
预热就是准备好等你来用。因为如果等你要用再创建线程池,就会有比较明显的等待过程。不光是线程池,连接池也是一样的。不预热的话,你会发现首次读写数据库的时间会多出几百毫秒的样子。
|
2
lis66951735 2020-05-14 12:03:01 +08:00
以 jdk 线程池为例,默认情况下线程池创建完成之后,池里是没有一个可复用的线程的,刚开始用的话,还是会有创建线程的开销。所以需要预热,当线程池准备好之后也准备好 coreSize 大小的可复用线程。
|
3
superrichman 2020-05-14 12:22:22 +08:00 via iPhone 1
你去食堂打饭,肯定是希望端着盘子过去,阿姨就给你盛上热腾腾的饭菜。而不是阿姨跟你说,我们的菜都还没开始煮,你先等等,等我们洗菜,再炒炒。
你打完菜,阿姨可以把已经热好的菜继续给下一个人。 |
4
jinzhongyuan 2020-05-14 12:22:46 +08:00
@xuanbg 感觉没多大意思啊
|
5
guyeu 2020-05-14 14:09:58 +08:00
鸡肋的优化。。
|