ExecutorService.submit(可运行任务,T结果)中的“结果”有什么作用?
问题内容:
看着它只是说的javadocs
<T> Future<T> submit(Runnable task, T result)
提交要执行的Runnable任务,并返回代表该任务的Future。Future的get方法将在成功完成后返回给定的结果。
参数:
任务-提交的任务
结果-要返回的结果
但是结果如何呢?它在那里存储什么吗?它是否仅使用结果的类型来指定类型Future<T>
?
问题答案:
它对结果没有任何作用-保留它。任务成功完成后,调用future.get()
将返回您传递的结果。
这是Executors $ RunnableAdapter的源代码,它显示任务运行后,将返回原始结果:
static final class RunnableAdapter<T> implements Callable<T> {
final Runnable task;
final T result;
RunnableAdapter(Runnable task, T result) {
this.task = task;
this.result = result;
}
public T call() {
task.run();
return result;
}
}
是的,结果的通用类型应与返回的Future的通用类型匹配。