其实你是对的。两种方法是相同的。通常,您不需要自己包装它们。如果是这样,您可能会在AbstractExecutorService中复制代码:
protected <T> RunnableFuture<T> newTaskFor(Callable<T> callable) { return new FutureTask<T>(callable);}Future和RunnableFuture之间的唯一区别是run()方法:
public interface RunnableFuture<V> extends Runnable, Future<V> { void run();}让执行者为您构造FutureTask的一个很好的理由是,确保对FutureTask实例的引用不止一种。也就是说,执行者 拥有 这个实例。



