大家好,又见面了,我是你们的朋友全栈君。
FutureTask是一项可取消的异步计算。该类提供了Future类的实现,主要方法包括:开始和取消一项计算,查询计算是否完成,获取计算结果。如果计算未完成,get()方法会阻塞。一旦计算结束,该计算不会被重启或取消。
FutureTask包裹了一个Callable对象。由于FutureTask实现了Runnable,一个FutureTask对象可以被提交给一个Executor对象执行。
除了作为一个单独类提供服务之外,该类提供了protected方法,这些方法可能在生成定制的任务类的时候有用。
内部定义了一个Sync类和一个Sync类的实例,sync。(在构造函数中实例化)来实现FutureTask的同步控制。
一般FutureTask多用于耗时的计算,主线程可以在完成自己的任务后,再去获取结果。
这个特点需要注意,这是它和普通java方法的区别之处,普通java方法会阻塞java主线程。而它可以继续干别的活,干完后,可以获取结果。如果仍未完成,主线程将阻塞直到结果取到为止。当然我们可以根据业务情况,通过轮巡查看计算的状态决定主线程的下一步操作。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/147685.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...