future是什么意思,基本上使用的都是Thread或者Runnable

访客4年前黑客工具1326

在多线程上,如果没有要求你取线程的返回值,或者捕获异常,大家基本上使用的都是Thread或者Runnable,当面试时,被问到这个瞬间就是 what? 这是什么东西。

看过我上篇文章的伙伴应该知道Future,FutureTask《初级面试:如何向线程池提交任务,提交任务有几种方式有什么区别》没看过的莫慌。这篇文章我来告诉你他们是什么,有什么用。

大家都知道线程池有2中方式提交任务,分别是实现Runnable的类和Callable的类,从Runnable中的run *** 中,也可以知道他没有返回值也没有抛出异常,这也就决定了它是实现不了具有返回值和抛异常的线程。如果我们需要获取返回值,就得想各种其他的办法来解决。自jdk1.5开始,提供了Callable,他们为我们提供了线程返回值和异常的功能。如图:

初级面试:解释什么是Future, FutureTask

Callable

call *** 抛出异常以及有返回值。(所以他与Runnable相比,优点就出来了),对比下如何实现线程。

初级面试:解释什么是Future, FutureTask

Runnable实现

初级面试:解释什么是Future, FutureTask

Callable实现

Runnable就不用说了,Callable必须要借助FutureTask封装才能启动线程,看过我上篇文章的伙伴肯定会说,我在线程池中并没有使用到FutureTask,而是直通过submit提交上去的。是因为submit里面也是使用了FutureTask,只是他帮我们写好了。如图:

初级面试:解释什么是Future, FutureTask

submit

眼尖的人肯定看到了execute这个 *** ,我之前说过这个 *** 只有实现了Runnable的类才能使用,也就证明了FutureTask也是肯定实现了Runnable的。如图:

初级面试:解释什么是Future, FutureTask

FutureTask

那么他除了包装Callable他还能干什么呢?

初级面试:解释什么是Future, FutureTask

FutureTask ***

  • isCancelled *** 表示任务是否被取消成功,如果在任务正常完成前被取消成功,则返回 true;
  • isDone *** 表示任务是否已经完成,若任务完成,则返回true;
  • cancel *** 用来取消任务,如果取消任务成功则返回true,如果取消任务失败则返回false;参数mayInterruptIfRunning表示是否允许取消正在执行却没有执行完毕的任务,如果设置true,则表示可以取消正在执行过程中的任务。如果任务已经完成,则无论mayInterruptIfRunning为true还是false,此 *** 肯定返回false,即如果取消已经完成的任务会返回false;如果任务正在执行,若mayInterruptIfRunning设置为true,则返回true,若mayInterruptIfRunning设置为false,则返回false;如果任务还没有执行,则无论mayInterruptIfRunning为true还是false,肯定返回true;
  • get() *** 用来获取执行结果,这个 *** 会产生阻塞,会一直等到任务执行完毕才返回;
  • get(long timeout, TimeUnit unit)用来获取执行结果,如果在指定时间内,还没获取到结果,就直接返回null。

最后从上面的源码中可以看见他实现了Future,而上面这些 *** 恰恰就是Future定义的。Future就是对于具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果。也就是说Future提供了三种功能:1)判断任务是否完成;2)能够中断任务;3)能够获取任务执行结果。而FutureTask是Future的实现,FutureTask对象可以对实现了Callable和Runnable的对象进行包装,由于FutureTask也是实现了Runnable接口所以它可以提交给Executor来执行。

 

相关文章

cp什么意思(cp是什么梗,出自哪里)

cp什么意思(cp是什么梗,出自哪里)

CP一次主要出现在动漫里,或者说主要用在二次元,或者近年来的少了三次元里,喜欢看动漫的朋友应该对这个词不会太陌生,尤其是喜欢看同人类动漫或者小说的。另外还要介绍的就是CP粉丝是什么,CP粉丝也流行...

匝道什么意思?匝道是什么样子

匝道什么意思?匝道是什么样子

高速公路匝道又叫引道,是高速公路出口或入口靠右侧的一条道路(一般在150-200米),因为高速公路连接的平顺性影响着车辆的安全行驶,所以高速上建设的匝道就具有非常重要的作用。 我们很多时候都...

结婚戒指带中指什么意思(戒指戴法的含义)

结婚戒指带中指什么意思(戒指戴法的含义)

在结婚现场,新郎把那枚钻戒戴在新娘的左手无名指上,并许下自己爱的诺言,是一个非常浪漫而神圣的时刻。把结婚戒指戴在左手中指上,也是一种广受认可的行为。那么,结婚戒指戴中指可以吗,结婚戒指有哪些戴法呢?...

力不从心什么意思(成语力不从心的背景故事是

力不从心 【原文】 超之始出,志捐躯命,冀立微功,以自陈效。会陈睦之变,道路隔绝,超以一身转侧绝域,晓譬诸国,因其兵众,每有攻战,辄为先登,身被金夷,不避死亡。赖蒙陛下神灵,且得延命沙漠,至今积三...

道听途说什么意思(道听途说是形容什么)

道听途说什么意思(道听途说是形容什么)

今天腊月二十七,我在市场上买年货,听到人们说了一个故事,觉得挺有意思,特说给大家听,使过年的你有所启迪。 皇上做了一个梦:山倒了,水干了,花谢了! 皇后说:不好,山倒了江山不保,水干了民心散了...

内容优化什么意思(热搜词7天上首页)

内容优化什么意思(热搜词7天上首页)

本文笔者将从用户体验五层要素出发,讲述内容运营如何在日常工作中,通过优化内容策略来提高用户体验。本文适用于对用户体验设计和内容运营的交叉领域感兴趣的内容运营从业者。 《用户体验要素》于2002年...