Callable:
Callable类似于Runnable,但是有返回值。
Future:
Future保存异步计算的结果,可以启动一个计算,将Future对象交给某个线程,然后忘掉它。Future对象的所有者在结果计算好之后就可以获得它。
FutureTask包装器将Callable转换成Future和Runnable,它同时实现两者的接口,例如:
Callable<Integer> myComputation = ...
FutureTask<Integer> task =new FutureTask<Integer>(myComputation);
Thread t = new Thread(task);
t.start();
...
Integer result = task.get();