FutureTask
FutureTask 实现了Runnable 和Future接口在FutureTask代码中的发现run方法的主要逻辑就是运行Callable的call方法,然后将保存结果或者异常(用的一个属性result)在通过set()方法把结果返回给类变量outcome
把FutureTask看作一个Future,那么它的作用就是控制Callable的call方法
的执行过程
总的说就是FutureTask实现了run(),该方法调用了Callable的call方法计算结果,(Callable是FutureTask构造函数传来的)得到计算结果后通过set(Obj)把结果赋给全局变量Outcome作为输出,最后调用get()方法时就会outcome作为返回。
/**
* 只是一个泡茶得流程,具体过程为在煲水的时候可以异步取来茶叶
* @param args
*/
public static void mian(String[] args) throws InterruptedException, ExecutionException {
Callable<Water> waterCallable=new Callable<Water>() {
@Override
public Water call() throws Exception {
return new Water();
}
};
FutureTask<Water> waterFutureTask=new FutureTask<Water>(waterCallable);
new Thread(waterFutureTask).start();
System.out.println(waterFutureTask.get());
Thread.sleep(1000);
Tea1 tea1=new Tea1();
}
static class Water{}
static class Tea1{}