Java 如何确定未来<;第1章>;无法转换为未来<;无效>;?

Java 如何确定未来<;第1章>;无法转换为未来<;无效>;?,java,generics,concurrency,Java,Generics,Concurrency,我需要创建未来列表来控制所有任务(在JavaFX中)何时完成。所以我有下面的代码 import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; import javafx.concurrent.Task; ... ExecutorService actionExecutor = ...; List<Future<Void>> futures = new ArrayList

我需要创建未来列表来控制所有任务(在JavaFX中)何时完成。所以我有下面的代码

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import javafx.concurrent.Task;

...
ExecutorService actionExecutor = ...;
List<Future<Void>> futures = new ArrayList<Future<Void>>();
Task<Void> task = new Task<Void>() {
    @Override
    public Void call() {
        ....
        return null;
    }
};
Future<Void> future = actionExecutor.submit(task); //LINE X
futures.add(future);
导入java.util.concurrent.ExecutorService;
导入java.util.concurrent.Future;
导入javafx.concurrent.Task;
...
ExecutorService actionExecutor=。。。;
列表期货=新的ArrayList();
任务=新任务(){
@凌驾
公开作废通知(){
....
返回null;
}
};
未来=actionExecutor.submit(任务)//第X行
期货。添加(期货);
第X行
我得到
未来无法转换为未来
。我的错误是什么?

是一个
可运行的
,因此当您将它传递给时,将返回一个
未来的

如果您想
ExecutorService.submit
返回
未来
,您必须提交一个
可调用的
;或者通过
actionExecutor.submit(任务,null)
提供返回值

或者,更改为使用
Future
作为变量类型/列表元素类型。

是一个
可运行的
,因此当您将其传递给时,将返回一个
Future

如果您想
ExecutorService.submit
返回
未来
,您必须提交一个
可调用的
;或者通过
actionExecutor.submit(任务,null)
提供返回值


或者,改为使用
Future
作为变量类型/列表元素类型。

鉴于它们是
Future
s,您不会对结果特别感兴趣。为什么不直接使用
Future
?@Andy Turner感谢您的评论。我当然可以。但是我想知道我做错了什么,以后不要再犯这个错误。考虑到他们是未来的,你不可能对结果特别感兴趣。为什么不直接使用
Future
?@Andy Turner感谢您的评论。我当然可以。但我想知道我做错了什么,以后不要再犯这个错误。