java线程池是怎么回收空闲线程的?聊聊过程

1 个回答

  • 黄蓉
    外界的声音都是参考,你不开心就不要参考。
    超过corePoolSize的空闲线程由线程池回收,线程池Worker启动跑第一个任务之后就一直循环遍历线程池任务队列,超过指定超时时间获取不到任务就remove Worker,最后由垃圾回收器回收。 ![image.png](https://images.codewd.com/46e4791d8963f27277d4600026fcd479.jpg "image.png") ①处是一个while循环,getTask方法就是从线程池队列取任务,里面就是上面我说到的调用BlockingQueue的poll方法,超时时间即是我们配置线程池事的keepAliveTime。 ②一旦跳出while循环,即进入到processWorkExit方法,这就是回收Worker,看下面截图: ![image.png](https://images.codewd.com/60742f74792c1bbe4a8be5a467de2368.jpg "image.png")
    发布于 2025-02-14 19:45 •IP属地 新疆
    举报
    评论
    收藏