ThreadPoolExecutor逻辑理解

不想贴源码,只想记一下它的实现思路

类中包含以下几个重要的成员

Work 内部类

关联了一个线程, 可以理解为一条工作流水线,就是用来执行具体工作的

works

工作线程列表,同时间开了多条工作流水线

workQueue

工作队列,用来暂时收留没来得及做的工作

corePoolSize

核心线程数:线程数超过该值时,则把来不及的工作放入workQueue

maximumPoolSize

最大线程数: workQueue放满之后,则新增工作流水线,如线程数超过了该值,就得用RejectedExecutionHandler来处理了

注意事项

  1. 总线程数在小于corePoolSize时,每次都创建新的线程来执行
  2. 线程执行完目前的工作后,如果再无工作可做,依据allowCoreThreadTimeOut开关,有可能阻塞在workQueue里,否则就销毁了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 博客链接:http://www.ideabuffer.cn/2017/04/04/深入理解Java线程池:Thre...
    闪电是只猫阅读 15,899评论 15 133
  • 前言 JDK中为我们提供了一个并发线程框架,它是的我们可以在有异步任务或大量并发任务需要执行时可以使用它提供的线程...
    Justlearn阅读 1,811评论 0 10
  • 前段时间遇到这样一个问题,有人问微信朋友圈的上传图片的功能怎么做才能让用户的等待时间较短,比如说一下上传9张图片,...
    加油码农阅读 1,216评论 0 2
  • 线程池常见实现 线程池一般包含三个主要部分: 调度器: 决定由哪个线程来执行任务, 执行任务所能够的最大耗时等 线...
    永顺阅读 2,312评论 3 22
  • 创客马拉松是什么? 创客马拉松是一个48小时极限竞赛,在48小时内,你将认识各种背景的人,和他们自由组队,基于我们...
    lilythedog阅读 1,440评论 0 1