ThreadPoolExecutor

ThreadPoolExecutor构造时的关键参数如下:

  1. corePoolSize
  2. maximumPoolSize
  3. keepAliveTime
  4. unit
  5. workQueue

当前的线程数小于corePoolSize时,只要有新任务提交,无论已经启动的线程是否处于IDLE状态,pool都会创建一个新线程来执行这个新任务。当前的线程数等于corePoolSize时, 如果有新任务提交,若workQueue未满,则将新任务加入workQueue;若workQueue已满,pool会创建一个新线程,从workQueue顶部取出一个任务处理,同时将新提交的任务放入workQueue。当前的线程数等于maximumPoolSize时,如果有新任务提交,若workQueue未满,则将新任务加入workQueue;若workQueue已满,则新任务会被丢弃。超出corePoolSize的线程处于IDLE状态超过keepAliveTime(unit是keepAliveTime的单位)后, 会自动退出。corePoolSize之内的线程在ThreadPoolExecutor shutdown之前默认是不会退出的,不过可以通过调用allowCoreThreadTimeout来设置corePoolSize之内的线程处于IDLE状态超过keepAliveTime后是否退出。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容