ThreadPoolExecutor线程大于corePoolsize的多出线程是怎么产生的

2025-05-20 00:19:05
推荐回答(1个)
回答1:

首先 维持一定的线程数 防止在任务来临时创建线程影响性能
然后 当池中现存的线程数已经全部被使用之后 开始向队列中保存任务 如果队列满了 则创建临时线程来处理任务 当高峰期过后会被回收 减少无意义的线程切换 释放掉线程占用的资源 检查频率由线程存活时间决定
队列类型要自己选择(定长队列、无界队列、以及一个不允许添加任务元素的队列...) 无界队列永远也不会触发reject和对临时线程的使用
如果队列满了 并且临时线程也用光了 则通过回调开发者提供的java.util.concurrent.RejectedExecutionHandler实例来处理该任务
题主可以看看java.util.concurrent.Executors是如何利用这些参数基于java.util.concurrent.ThreadPoolExecutor创造出不同的线程池的