前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >源码解析:ThreadPoolExecutor(2)

源码解析:ThreadPoolExecutor(2)

作者头像
爪哇缪斯
发布2023-05-09 21:46:42
1130
发布2023-05-09 21:46:42
举报
文章被收录于专栏:爪哇缪斯爪哇缪斯

1.3> 线程池的代码用例

  • 我们已经了解到了线程池的基本工作流程,那么如何使用线程池呢?我们就做一个小小的使用例子,因为只有我们知道怎么使用它,才可以基于它对应的方法进行源码分析。
  • 通过上面的例子,我们针对源码的解析就要针对红框的这两点进行深入探索,一个是ThreadPoolExecutor的构造函数,另一个就是execute方法

二、源码解析——构造函数

2.1> 线程池的构造函数及类的继承关系

  • 首先,我们先要了解一下ThreadPoolExecutor线程池类的继承关系,好对它有一个宏观的认知,如下图所示:
  • 那么针对它的构造函数,其实我们能够发现,线程池的工作原理在构造函数的入参中都是有映射的,如下所示:

【解释】

  • corePoolSize:核心线程数。
  • maximumPoolSize:最大线程数。
  • keepAliveTime:线程池中线程的最大闲置生命周期。
  • unit:针对keepAliveTime的时间单位。
  • workQueue:阻塞队列。
  • threadFactory:创建线程的线程工厂。
  • handler:拒绝策略。

2.2> Executors提供的线程池模板

  • 在Executors中,已经给我们提供了很多种线程池的实现。如下图所示:
  • newCachedThreadPool

创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。

  • newFixedThreadPool

创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。

  • newScheduledThreadPool

创建一个定长线程池,支持定时及周期性任务执行。

  • newSingleThreadScheduleExecutor

创建一个单线程执行程序,它可安排在给定延迟后运行命令或者定期地执行。(注意,如果因为在关闭前的执行期间出现失败而终止了此单个线程,那么如果需要,一个新线程会代替它执行后续的任务)。可保证顺序地执行各个任务,并且在任意给定的时间不会有多个线程是活动的。与其他等效的 newScheduledThreadPool(1) 不同,可保证无需重新配置此方法所返回的执行程序即可使用其他的线程。

  • newSingleThreadExecutor

创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。


后面的内容,参见:源码解析:ThreadPoolExecutor(3)

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-20,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 爪哇缪斯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.3> 线程池的代码用例
  • 二、源码解析——构造函数
    • 2.1> 线程池的构造函数及类的继承关系
      • 2.2> Executors提供的线程池模板
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com