V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
trzzzz
V2EX  ›  Java

ThreadPoolExecutor 问题:线程数大于核心线程书,线程池中队列没有任务后,在等待 poll(keepAlive)后应当非核心线程会被销毁,但我的疑惑是他怎么判断是否是非核心线程,如果是核心线程的话应当不会销毁。

  •  
  •   trzzzz · 197 天前 · 1720 次点击
    这是一个创建于 197 天前的主题,其中的信息可能已经有所发展或是发生改变。
    15 条回复    2023-10-02 17:59:16 +08:00
    Helsing
        1
    Helsing  
       197 天前 via iPhone
    看源码吧,其实并没有核心线程和非核心线程的区分,你设置了几个核心线程,线程池就在已经创建的线程中,保留几个线程不销毁,就这么简单。

    核心线程和非核心线程就是一种线程。
    lingalonely
        2
    lingalonely  
       197 天前
    不存在指定的核心线程,只要保持线程池的线程数到指定数量就行,其他多余的拿出来回收掉
    trzzzz
        3
    trzzzz  
    OP
       197 天前 via iPhone
    谢谢
    sujin190
        4
    sujin190  
       197 天前 via Android
    最小线程数吧,你哪看的核心非核心?超过最小线程数的线程在超过空闲时间后销毁吧
    trzzzz
        5
    trzzzz  
    OP
       197 天前
    @sujin190 线程池第一个参数 corePoolSize ,正常理解的话是核心线程数。寻思 core 也没最小的翻译把
    Euthpic
        6
    Euthpic  
       197 天前 via Android
    让你来设计的话,你会关心一个线程是核心的还是非核心的吗?只需关心池内的线程数量就行。核心线程数,最大线程数,其实也就是这个池子的下界和上界而已
    trzzzz
        7
    trzzzz  
    OP
       197 天前
    @Euthpic 看了源码,核心、最大只是逻辑概念,没有明确说先创建的就是核心线程,后面就是非核心线程,里面线程谁都可能在 keepAlive 后被回收
    sujin190
        8
    sujin190  
       197 天前 via Android
    @trzzzz 这命名有问题,线程都是一样的,其实就是线程池最小线程数的逻辑,和连接池最小连接数事一样的
    trzzzz
        9
    trzzzz  
    OP
       197 天前
    @sujin190 我之前说的有点问题。看了一些博客和楼中其他人回答,所谓的核心线程数也就是线程池的最小线程数。druid 配置有最小最大连接数我想也和线程池的差不多
    wzcloud
        10
    wzcloud  
       197 天前
    源码没有区分核心非核心,只是在执行方法时会传递一个 bool 值类型的参数,如果为 true,则调用队列的阻塞方法,否则调用超时等待方法(如果超时没获取到数据,则线程结束--相当于关闭了非核心线程)
    Ericcccccccc
        11
    Ericcccccccc  
       197 天前
    这就好像假设你需要身上保留 10 块钱, 你先有了 10 块后来又获得 10 块, 这下需要把 10 块花出去难道还要区分先获得的 10 块还是后获得的 10 块吗?
    Belmode
        12
    Belmode  
       196 天前 via Android
    corePoolSize 应该理解成“最少存活线程数”吧
    ikas
        13
    ikas  
       196 天前
    需要配合 allowsCoreThreadTimeOut 参数
    如果设置 false,那么 core 线程就是最开始的生成的那几个线程
    trzzzz
        14
    trzzzz  
    OP
       196 天前
    @ikas 这不一定,满足销毁线程条件时,任何线程都有可能被销毁
    ikas
        15
    ikas  
       196 天前
    设置 core size 为 0?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1709 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:37 · PVG 00:37 · LAX 09:37 · JFK 12:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.