FutureTask是一项可取消的异步计算。该类提供了Future类的实现,主要方法包括:开始和取消一项计算,查询计算是否完成,获取计算结果。如果计算未完成,get()方法会阻塞。一旦计算结束,该计算不会被重启或取消。
FutureTask包裹了一个Callable对象。由于FutureTask实现了Runnable,一个FutureTask对象可以被提交给一个Executor对象执行。
除了作为一个单独类提供服务之外,该类提供了protected方法,这些方法可能在生成定制的任务类的时候有用。
内部定义了一个Sync类和一个Sync类的实例,sync。(在构造函数中实例化)来实现FutureTask的同步控制。
一般FutureTask多用于耗时的计算,主线程可以在完成自己的任务后,再去获取结果。
这个特点需要注意,这是它和普通java方法的区别之处,普通java方法会阻塞java主线程。而它可以继续干别的活,干完后,可以获取结果。如果仍未完成,主线程将阻塞直到结果取到为止。当然我们可以根据业务情况,通过轮巡查看计算的状态决定主线程的下一步操作。
版权声明:本文为wzjstrong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。