网易首页 > 网易号 > 正文 申请入驻

一文总结线程池框架结构体系

0
分享至

前面几篇文章分析了线程的主要实现,今天来整体总结一下它们。

总览图

直接上总结的总览图,如下图:

如果看过前几篇文章应该基本能够看懂这张总结图,可能在单独的一篇文章里弄懂了一个知识点,但是没有一个总体的概念,所以最后有了这种总结图。前面几篇文章主要讲的就是上图中AbstractExecutorService、ThreadPoolExecutor、ScheduledThreadPoolExecutor这三个类的主要功能,因为它们是线程池真正的实现者

两个接口

接下来详细解释下上图出现的类和接口,首先是最顶层的接口Executor,它只定义了一个方法execute(Runnable command),相当于定义了一个框架,它能够执行一个任务。Executor就像是定义了一个框架,并确定了这个框架能够提供的功能。

第二个是ExecutorService接口,它继承Executor。主要扩展了关闭线程管理的一些功能,比如shutdown方法用来关闭线程池的任务,isTerminated方法来判断线程池的任务是否结束。

ExecutorService还提供了最重要的方法submit,它支持了有返回结果的任务提交,也引入了实现这个功能最关键的接口Callable、Future;

Executor、ExecutorService都是接口,只是定义了提交任务、关闭任务等方法,相当于只是申明了线程池支持这些功能

AbstractExecutorService

AbstractExecutorService是线程池系列第三个类,它是抽象类并继承ExecutorService接口。它主要是实现了ExecutorService接口的submit系列方法。

实现submit方法主要依靠RunnableFuture接口和它的实现类FutureTask。RunnableFuture继承Runnable和Future接口,而它的实现FutureTask的一个属性callable是Callable类型。

FutureTask实现了Runnable的run方法,run方法调用的是callable的call方法保存执行结果。同时也实现Future的get方法获取结果,如果任务还没有执行则阻塞线程

所以submit方法实现的主要过程是提交的任务Callable封装成FutureTask,并把FutureTask当作Runnable丢给execute方法去异步执行,然后把FutureTask当作Future作为submit返回值

但是AbstractExecutorService并没有实现execute方法,所以它是一个抽象类,在等待有缘人来实现execute,实现线程池的最后一步。

实现正真的实现者ThreadPoolExecutor

ThreadPoolExecutor是Executor框架的真正实现者。它实现了execute方法,execute正真的实现,以下三个关键点:

HashSet workers;//Worker集合,线程池

BlockingQueue workQueue;//阻塞队列,要执行的任务

final void runWorker(Worker w);//Worker调用这个方法,可以从阻塞队列中获取任务来执行。

这里有一个关键类Worker,关键源码如下:

线程池execute方法会先根据现在Worker的数量判断是创建一个Worker对象还是把任务直接放到队列中,如果新建了Worker,则在最后会调用Worker的thread的start方法,start方法会异步执行,execute方法就完成了。

start会执行thread的run方法也就会执行Worker的run方法,所以最终会执行线程池的runWorker方法,runWorker会优先执行Worker中保存的任务,如果为null则会从队列中获取任务再次执行,获取不到就阻塞。这里是一个死循环,能拿到任务就执行,执行完就再去拿,拿不到就先阻塞

延迟队列

ScheduledExecutorService继承AbstractExecutorService,它申明了几个schedule开头的方法。

而ScheduledThreadPoolExecutor是ScheduledExecutorService的具体实现,通过延迟队列线程池实现了定期执行任务的功能。

总结

线程池一直觉得是很复杂的功能,但是分析了它主要的方法的实现后就会发现还是比较简单的,不过它的实现方式仍然是非常经典巧妙的。

Java程序员日常学习笔记,如理解有误欢迎各位交流讨论!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
太狂了!乌兹球迷对中国男足下“必杀令”:这场不进2球不配夺冠

太狂了!乌兹球迷对中国男足下“必杀令”:这场不进2球不配夺冠

国足风云
2026-01-17 10:54:37
恒大集团裁员5.4万人

恒大集团裁员5.4万人

地产微资讯
2026-01-17 09:38:45
沈佳润用力过猛,为可口可乐拍春节广告脸比老爸大,粉底厚像虎妞

沈佳润用力过猛,为可口可乐拍春节广告脸比老爸大,粉底厚像虎妞

乐悠悠娱乐
2026-01-17 12:57:23
WTT球星赛:男单8强出炉!国乒4人日本输光,林诗栋张本智和出局

WTT球星赛:男单8强出炉!国乒4人日本输光,林诗栋张本智和出局

全言作品
2026-01-17 19:01:22
国家 “点名” 北京,新任务新发展方向来了!这次事关每个北京人!

国家 “点名” 北京,新任务新发展方向来了!这次事关每个北京人!

爱下厨的阿酾
2026-01-17 15:45:23
纪委通报:他接受纪律审查和监察调查

纪委通报:他接受纪律审查和监察调查

锡望
2026-01-17 11:54:35
LV做梦也想不到,请了一堆流量大咖,却被一个00后运动员抢尽风头

LV做梦也想不到,请了一堆流量大咖,却被一个00后运动员抢尽风头

以茶带书
2026-01-15 15:06:31
U23国足被看低!董路:可能憋着输把大的 刘建宏:我们特别怕对手

U23国足被看低!董路:可能憋着输把大的 刘建宏:我们特别怕对手

念洲
2026-01-17 08:03:26
“哈佛城管”暴春被查

“哈佛城管”暴春被查

观察者网
2026-01-17 10:39:05
快船5连胜重返前十!一口气获4大利好:小卡缺阵哈登31+10太硬气

快船5连胜重返前十!一口气获4大利好:小卡缺阵哈登31+10太硬气

锅子篮球
2026-01-17 13:15:22
卡罗拉锐放价格再下探!优惠高达3.3万,网友:这次真心动了

卡罗拉锐放价格再下探!优惠高达3.3万,网友:这次真心动了

汽车网评
2026-01-16 22:09:53
天呀,杜海涛竟然现成这样了,沈梦辰对他是真爱啊

天呀,杜海涛竟然现成这样了,沈梦辰对他是真爱啊

草莓解说体育
2026-01-07 01:43:18
央视直播曼联vs曼城:卡里克接受大考 曼城两翼齐飞客场要3分

央视直播曼联vs曼城:卡里克接受大考 曼城两翼齐飞客场要3分

智道足球
2026-01-17 12:37:04
历史上的辽国和金国,是现在中国哪个省份?答案让人深感意外

历史上的辽国和金国,是现在中国哪个省份?答案让人深感意外

长风文史
2026-01-17 16:14:02
秋瓷炫:我这辈子最正确的决定,就是39岁高龄为中国籍小丈夫生子

秋瓷炫:我这辈子最正确的决定,就是39岁高龄为中国籍小丈夫生子

八斗小先生
2026-01-15 09:59:08
张本智和被日本乒协抛弃了,一人战斗,最终被薛飞击败,无缘八强

张本智和被日本乒协抛弃了,一人战斗,最终被薛飞击败,无缘八强

王稱吃吃喝喝
2026-01-17 19:33:46
央视开年王炸,50集历史大剧来了!倪大红董勇压轴,这剧恐怕要爆

央视开年王炸,50集历史大剧来了!倪大红董勇压轴,这剧恐怕要爆

洲洲影视娱评
2026-01-17 12:36:23
南海撞机王伟成功跳伞,咋10万人都找不到他?直到20多年后才明白

南海撞机王伟成功跳伞,咋10万人都找不到他?直到20多年后才明白

鹤羽说个事
2025-12-12 14:31:49
1000架歼-20和900架歼-16?英国智库:难以战胜2030年的中国空军

1000架歼-20和900架歼-16?英国智库:难以战胜2030年的中国空军

沧海旅行家
2026-01-17 14:05:11
1983年,李大钊的儿子去祭拜父亲,欣喜发现了埋在地下的一块碑

1983年,李大钊的儿子去祭拜父亲,欣喜发现了埋在地下的一块碑

兴趣知识
2026-01-15 15:38:48
2026-01-17 20:36:49
IT乐知
IT乐知
it乐知· 程序员的私房笔记
122文章数 1038关注度
往期回顾 全部

科技要闻

8亿周活扛不住烧钱 ChatGPT终向广告"低头"

头条要闻

美交通部长:进口4.9万辆中国电动汽车 加拿大要后悔

头条要闻

美交通部长:进口4.9万辆中国电动汽车 加拿大要后悔

体育要闻

三巨头走了俩,联盟笑柄却起飞了

娱乐要闻

徐家还是爱孩子的,在马筱梅生产前选择和解

财经要闻

保不准,人民币会闪击6.8!

汽车要闻

林肯贾鸣镝:稳中求进,将精细化运营进行到底

态度原创

游戏
教育
房产
数码
亲子

LCK春季赛:大闹天宫一锤定音,BFX鏖战团战击溃BRO

教育要闻

科一、北川中学、蜀东外国语......绵阳多所学校正在招聘

房产要闻

真四代来了!这次,海口楼市将彻底颠覆!

数码要闻

消息称苹果2026 - 2028年为5款产品升级OLED屏幕

亲子要闻

双胞胎宝宝的行为让人好奇,他们长大后回忆了当时的聊天记录,网友:回头再看一遍还真说得通

无障碍浏览 进入关怀版