您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
(future是什么意思)-解释什么是Future)- FutureTask
任务,方式,这一(future是什么意思)-解释什么是Future)- FutureTask
发布时间:2019-02-08加入收藏来源:互联网点击:
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方式
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来实行。
来源于:莫然blog,热烈欢迎共享文中!
本文到此结束,希望对大家有所帮助呢。
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |