java.util.FutureTask<V>整理

 FutureTask 是一个泛型类,实现了java.util.concurrent.RunnableFuture 接口,该RunnableFuture 接口继承了java.util.concurrent.Future 接口与java.lang.Runnable接口。
    因此,首先FutureTask 类的实例是一个Runnalbe实例,可作为target参数传入Thread(target)构造器。通过调用Thread类的start()成员方法,可使一个新线程处于就绪状态。新线程获取CPU资源后,转变为运行状态时,此时target实例的run()方法会被调用。在此例中,即FutureTask 的实例中的run()方法会被调用。
    FutureTask 中有成员变量 c,c为Callable 接口的引用,此Callable 引用通过FutureTask 的构造函数获得,同时该类中也有成员变量 outcome, outcome为V的引用。在run()方法中,调用了c 的call()方法,该方法为真正的运算执行体,call()方法返回类型为V。如果线程执行顺利,则会按照 run()-->call()的调用顺序,调用Callable 对象的call()方法,并将call方法返回的结果存储于FutureTask 实例的outcome成员变量中。
    FutureTask 同时提供了成员方法get(),以获取线程执行后的返回结果outcome。FutureTask 中的所有操作都是线程安全的,该类有7个final 静态整型变量,分别为NEW, COMPLETING, NORMAL, EXCEPTIONAL, CANCELLED, INTERRUPTING, INTERRUPTED,数值从0到6,用于标识线程的运行状态。只有当状态为NORMAL时,实例才可以通过get()方法获取线程执行结果。
posted @ 2015-08-06 17:48  王振璇  阅读(289)  评论(0编辑  收藏  举报