对比来看java的Runnable&Callable&FutureTask
这篇文章其实主要是想要讲清楚一个概念,就是Runable和Callable的区别,以及当它们和FutureTask、ExecutorService一起执行的原理。
基本概念
说明:
1、上图中java多线程的实现方案就没什么好说的了,基本上搞java的人都是理解的。
2、其实我始终觉得Thread是一个容器,所以和Runnable和Callable应该不在一个层次的概念,Thread应该是cpu真正调度的实体,这个实体会做什么呢,会执行Runnable和Callable的方法,所以特别不喜欢把这三者放在一起。
基本流程
说明:
1、左边是任务创建过程,右边是任务执行过程。
基本用法
说明:
1、这个截图基本上就是Runnable和Callable和ExecutorService结合一起使用的用法。
2、关键是我比较感兴趣submit内部做了什么事情。
FutureTask创建之Callble对象
说明:
1、在submit一个对象的时候,其实内部是给我们创建了一个FutureTask对象,整个创建过程是层层递进的。
2、FutureTask对象有两个重要属性,一个是callable对象也就是执行对象,一个state,标记这个任务是否完成。
FutureTask创建之Runable
说明:
1、当我们针对Runnable对象创建futureTask的时候内部其实用Callable的适配器包装了一下,然后对外以Callable的对象运行。
2、可以看到call实际上调用的是task的run函数,这个run就不说了吧,线程里面的入口函数。
FutureTask内部属性
说明:
1、几个核心属性,callable就是刚刚所谓的执行对象,outcome最后执行返回的结果,其他整个线程的执行状态流转。
FutureTask任务提交
说明:
1、这个futureTask的提交过程跟我们跟文章《我发现我不懂你了_JUC》其实是一样的,可以自行参考。
2、ExecutorService里面的worker其实真正调用的是run函数,所以我们还需要进一步搞清楚FutureTask是否包含run函数,当然毫无疑问肯定是有的,可以参考下面这个图。
FutureTask任务执行
说明:
1、接上面描述的文字,所以ExecutorService的worker其实真正执行的是Callable对象的call函数并设置回调结果。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
云效支持自定义构建镜像 征集10家企业免费使用
注:目前该功能处于公测阶段,现征集10家企业优先免费体验,如果您有需要,请通过页面右下角‘提问’悬浮球联系我们,或者文末钉钉扫码联系此功能的技术顾问。 为什么需要自定义构建镜像? 构建环境的需求是复杂多样的,虽然我们提供了一些基础的构建镜像,比如Java、Python等,但是仍然有些场景无法满足: 编程语言在不断演进,新的语言层出不穷,会有覆盖不到的语言或者特定版本。比如我们的Java8构建环境提供了jdk-8u161,但你需要的是jdk-8u162。 目前编译环境都是针对单个语言的,无法支持两种或以上的语言的同时编译。比如同时使用Node和Java。 编译过程需要下载特定的依赖(非maven和npm仓库)或工具,下载时长会影响构建速度。 在这些情况下,我们通过自定义构建镜像的方式,满足您的特殊编译需求。 如何制作自定义构建镜像?您可以按照如下
- 下一篇
就在今天!当当科技品类日满100减50
点击关注异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书 ——异步小编 畅销图书篇 《Python编程快速上手》 [美] Al Sweigart 斯维加特 著 点击封面购买纸书 基于Python3零基础入门学习书,美亚畅销Python编程入门书,累计销售超10万册 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。 《Python程序设计(第3版)》 【美】John Zelle(策勒)著 点击封面购买纸书 Python之父作序推荐 ,Python 3 编程入门经典。本书以Python语言...
相关文章
文章评论
共有0条评论来说两句吧...