FutureTask

来源:互联网 发布:怎么在淘宝开直播间 编辑:程序博客网 时间:2024/05/07 03:31

FutureTask是一项可取消的异步计算。该类提供了Future类的实现,主要方法包括:开始和取消一项计算,查询计算是否完成,获取计算结果。如果计算未完成,get()方法会阻塞。一旦计算结束,该计算不会被重启或取消。

FutureTask包裹了一个Callable对象。由于FutureTask实现了Runnable,一个FutureTask对象可以被提交给一个Executor对象执行。

除了作为一个单独类提供服务之外,该类提供了protected方法,这些方法可能在生成定制的任务类的时候有用。

内部定义了一个Sync类和一个Sync类的实例,sync。(在构造函数中实例化)来实现FutureTask的同步控制。

 

一般FutureTask多用于耗时的计算,主线程可以在完成自己的任务后,再去获取结果。

这个特点需要注意,这是它和普通java方法的区别之处,普通java方法会阻塞java主线程。而它可以继续干别的活,干完后,可以获取结果。如果仍未完成,主线程将阻塞直到结果取到为止。当然我们可以根据业务情况,通过轮巡查看计算的状态决定主线程的下一步操作。



0 0
原创粉丝点击