V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
harryperlau
V2EX  ›  问与答

什么是线程池预热?

  •  
  •   harryperlau · 2020-05-14 11:43:28 +08:00 · 2763 次点击
    这是一个创建于 1686 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我认为的线程池预热就是让核心线程都处于 running 的状态,请问这样理解正确吗?为什么要预热呢?

    5 条回复    2020-05-14 14:09:58 +08:00
    xuanbg
        1
    xuanbg  
       2020-05-14 11:50:41 +08:00
    预热就是准备好等你来用。因为如果等你要用再创建线程池,就会有比较明显的等待过程。不光是线程池,连接池也是一样的。不预热的话,你会发现首次读写数据库的时间会多出几百毫秒的样子。
    lis66951735
        2
    lis66951735  
       2020-05-14 12:03:01 +08:00
    以 jdk 线程池为例,默认情况下线程池创建完成之后,池里是没有一个可复用的线程的,刚开始用的话,还是会有创建线程的开销。所以需要预热,当线程池准备好之后也准备好 coreSize 大小的可复用线程。
    superrichman
        3
    superrichman  
       2020-05-14 12:22:22 +08:00 via iPhone   ❤️ 1
    你去食堂打饭,肯定是希望端着盘子过去,阿姨就给你盛上热腾腾的饭菜。而不是阿姨跟你说,我们的菜都还没开始煮,你先等等,等我们洗菜,再炒炒。
    你打完菜,阿姨可以把已经热好的菜继续给下一个人。
    jinzhongyuan
        4
    jinzhongyuan  
       2020-05-14 12:22:46 +08:00
    @xuanbg 感觉没多大意思啊
    guyeu
        5
    guyeu  
       2020-05-14 14:09:58 +08:00
    鸡肋的优化。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1571 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 17:00 · PVG 01:00 · LAX 09:00 · JFK 12:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.