Thread类通过Runnable target可以接收一个Runnable接口的实现来处理,但是Runnable接口没有返回值,如果需要异步执行的返回值就需要使用Callable接口。
Callable接口的实现依赖于RunnableFuture这个类,它是一个接口。
public interface RunnableFuture<V> extends Runnable, Future<V> {
/**
* Sets this Future to the result of its computation
* unless it has been cancelled.
*/
void run();
}
Future类的目的就是获取异步执行的结果
RunnableFuture的子类是FutureTask,里面通过outCome来保存执行结果,如果调用futureTask.get()方法可以获取执行结果,如果没有执行完,则阻塞。