多线程启动Callable的流程,Thread --> FutureTask --> Callable.多线程
实现Callable接口的多线程类能够有返回值,这就弥补了Runnable接口没有返回值的问题.线程
为何要这样设计? Thread类属于很老的类,并且为了保证全部的线程都必须从这个类的start()方法开始启动,就得重新包装一个新的Runnable接口的实现类FutureTask. 经过FutureTask来间接调用Callable接口.执行结束的结果经过FutureTask的get()方法获取.设计