Java 如何确定未来<;第1章>;无法转换为未来<;无效>;?
我需要创建未来列表来控制所有任务(在JavaFX中)何时完成。所以我有下面的代码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
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感谢您的评论。我当然可以。但我想知道我做错了什么,以后不要再犯这个错误。