当前位置:网站首页>AQS Synchronization Component - FutureTask Analysis and Use Cases
AQS Synchronization Component - FutureTask Analysis and Use Cases
2022-08-09 13:02:00 【51CTO】
FutureTask原理
FutureTask间接实现了runnable接口和future接口,说明了futureTask是runnable与callnable的集合体,即是有返回值的runnable方法.因此,FutureTask可以交给Executor执行,也可以由调用线程直接执行(FutureTask.run()).
源码分析
构造函数
常用方法
根据FutureTask的run方法执行的时机,FutureTask可以处于以下三种执行状态:
- 未启动:在FutureTask.run()还没执行之前,FutureTask处于未启动状态.当创建一个FutureTask对象,并且run()方法未执行之前,FutureTask处于未启动状态.
- 已启动:FutureTask对象的run方法启动并执行的过程中,FutureTask处于已启动状态.
- 已完成:FutureTask正常执行结束,或者FutureTask执行被取消(FutureTask对象cancel方法),或者FutureTask对象run方法执行抛出异常而导致中断而结束,FutureTask都处于已完成状态.
- 当FutureTask处于未启动或已启动状态时,执行FutureTask.get()方法将导致调用线程阻塞
- 当FutureTask处于已完成状态时,执行FutureTask.get()方法将导致调用线程立即返回结果或抛出异常
- 当FutureTask处于未启动状态时,执行FutureTask.cancel()方法将导致此任务永远不会被执行
- 当FutureTask处于已启动状态时,执行FutureTask.cancel(true)方法将以中断执行此任务线程的方式来试图停止任务
- 当FutureTask处于已启动状态时,执行FutureTask.cancel(false)方法将不会对正在执行此任务的线程产生影响(让正在执行的任务运行完成)
- 当FutureTask处于已完成状态时,执行FutureTask.cancel(…)方法将返回false.
使用案例
FutureTask、Runnable、Callable
输出结果如下:
- 可以把FutureTask交给Executor执行
- 也可以通过ExecutorService.submit(…)方法返回一个FutureTask,然后执行FutureTask.get()方法或FutureTask.cancel(…)方法
- 除此以外,还可以单独使用FutureTask
Future、Callable
当一个线程需要等待另一个线程把某个任务执行完后它才能继续执行,此时可以使用FutureTask.
本文内容到此结束了,
如有收获欢迎点赞收藏关注️,您的鼓励是我最大的动力.
如有错误疑问欢迎各位大佬指出.
主页: 共饮一杯无的博客汇总保持热爱,奔赴下一场山海.
边栏推荐
- API调用,API传参,面向对接开发,你真的会写接口文档吗?
- TI的片上固化好的boot ROM(上电引导加载程序)退出后的去向
- proto3-2 syntax
- 两分钟录音就可秒变语言通!火山语音音色复刻技术如何修炼而成?
- 已解决IndentationError: unindent does not match any oute r indentation Level
- 问题来了:4GB物理内存的机器上申请8G内存能成功吗?
- ABAP 面试题:如何使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令?
- 1小时直播招募令:行业大咖干货分享,企业报名开启丨量子位·视点
- 研发需求的验收标准应该怎么写? | 敏捷实践
- 2022牛客多校(六)M. Z-Game on grid
猜你喜欢
1小时直播招募令:行业大咖干货分享,企业报名开启丨量子位·视点
两分钟录音就可秒变语言通!火山语音音色复刻技术如何修炼而成?
阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO 一锅端
字节秋招二面把我干懵了,问我SYN报文什么情况下会被丢弃?
900页数学论文证明旋转的黑洞不会爆炸,丘成桐:30多年来广义相对论首次重大突破...
罗振宇折戟创业板/ B站回应HR称用户是Loser/ 腾讯罗技年内合推云游戏掌机...今日更多新鲜事在此...
国产抗新冠口服药每瓶不超300元/ 我国IPv6网络全面建成/ 谷歌入局折叠屏手机...今日更多新鲜事在此...
Blocking, non-blocking, multiplexing, synchronous, asynchronous, BIO, NIO, AIO all in one pot
win10编译x264库(也有生成好的lib文件)
Common gadgets of Shell (sort, uniq, tr, cut)
随机推荐
李开复花上千万投的缝纫机器人,团队出自大疆
goalng-sync/atomic原子操作
ACM01 Backpack problem
Batch大小不一定是2的n次幂!ML资深学者最新结论
JS封装防抖(代码持续优化)
00后写个暑假作业,被监控成这笔样
The grep command Shell regular expressions, the three musketeers
虚拟机安装出现的问题汇总
electron 应用开发优秀实践
发明时代,「幂集创新」事关你我
2022 Niu Ke Duo School (6) M. Z-Game on grid
HAproxy: load balancing
阿里高工带来的20022最新面试总结太香了
香港服务器如何进行加密?
结构体变量的首地址获取注意事项
AQS同步组件-FutureTask解析和用例
Common gadgets of Shell (sort, uniq, tr, cut)
信息系统项目管理师必背核心考点(六十三)项目组合管理的主要过程&DIPP分析
非科班AI小哥火了:他没有ML学位,却拿到DeepMind的offer
AI篮球裁判火了,走步算得特别准,就问哈登慌不慌