future是什么意思(解释什么是Future, FutureTask)在多线程上,如果没有要求你取线程的返回值,或者捕获异常,大家基本上使用的都是Thread或者Runnable,当面试时,被问到这个瞬间就是 what? 这是什么东西。
看过我上篇文章的伙伴应该知道Future,FutureTask《初级面试:如何向线程池提交任务,提交任务有几种方式有什么区别》没看过的莫慌。这篇文章我来告诉你他们是什么,有什么用。
大家都知道线程池有2中方式提交任务,分别是实现Runnable的类和Callable的类,从Runnable中的run *** 中,也可以知道他没有返回值也没有抛出异常,这也就决定了它是实现不了具有返回值和抛异常的线程。如果我们需要获取返回值,就得想各种其他的办法来解决。自jdk1.5开始,提供了Callable,他们为我们提供了线程返回值和异常的功能。如图:
Callable
call *** 抛出异常以及有返回值。(所以他与Runnable相比,优点就出来了),对比下如何实现线程。
Runnable实现
Callable实现
Runnable就不用说了,Callable必须要借助FutureTask封装才能启动线程,看过我上篇文章的伙伴肯定会说,我在线程池中并没有使用到FutureTask,而是直通过submit提交上去的。是因为submit里面也是使用了FutureTask,只是他帮我们写好了。如图:
submit
眼尖的人肯定看到了execute这个 *** ,我之前说过这个 *** 只有实现了Runnable的类才能使用,也就证明了FutureTask也是肯定实现了Runnable的。如图:
FutureTask
那么他除了包装Callable他还能干什么呢?
FutureTask ***
从上面的源码中可以看见他实现了Future,而上面这些 *** 恰恰就是Future定义的。Future就是对于具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果。也就是说Future提供了三种功能:1)判断任务是否完成;2)能够中断任务;3)能够获取任务执行结果。而FutureTask是Future的实现,FutureTask对象可以对实现了Callable和Runnable的对象进行包装,由于FutureTask也是实现了Runnable接口所以它可以提交给Executor来执行。
在美国的国家公园管理局在本周庆祝其百年华诞。作为50年前的Mission 66项目的一部分,我们挑选了八个最佳的游客中心和娱乐设施(+幻灯片)。66号任务是一项为期10年的建筑计划,旨在在1966年之...
一、去哪高手下单怎么找黑客 1、联系能官方是犯罪吗网站怎么帮忙改成绩许多人是计算机安全公司的雇员,在完全合法的情况下攻击系统。去哪高手下单关于的在IPMAC上手动设置网关的IP地址和MAC地址输入到您...
没接音箱或已接,但还需设定声频。右下方声音图标,响声难题习题的搜索与解答,默认设置声音设备,好的,请打开声频提高作用,等级选择项栏,将声音调节器放大,音量合成器,将各类响声放大,鼠标右键此电脑,特性,...
家中有一条网线,有一台电脑,可以用来做什么或者说你会用它来做什么?也许很多人的选择大体相同,选择上网冲浪,浏览有趣的网页,看有趣的视频、有趣的图片;选择打游戏,享受和游戏的乐趣,和朋友团队合作的快乐感...
嫖圣商务警服-网红上门特价批发 伴游描述:最近有很多朋友在商务预约网后台留言,想了解关于嫖圣商务警服信息。于是小编通过百度、知乎、文库等途径,总结了以下关于嫖圣商务警服的全部内容。希望对大家有所帮...
标题和摘要的好坏直接影响点击率,通过我们对标题和摘要的精心优化,能够获得更高的用户点击率。下面由天企网络小编来带大家了解什么是优化网站,以及现在做优化网站需要留意什么吧! 跟着网络技术的发展,网站优...