我需要创建所有任务(在JavaFX中)完成时控制的期货列表。所以我有以下代码。
PivotHeader
在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);
我得到LINE X
。我的错是什么?
答案 0 :(得分:1)
javafx.concurrent.Task
是Runnable
,因此当您将其传递给ExecutorService.submit(Runnable)
时,会返回Future<?>
。
如果您希望ExecutorService.submit
返回Future<Void>
,则必须提交Callable<Void>
;或通过actionExecutor.submit(task, null)
提供返回值。
或者,更改为使用Future<?>
作为变量类型/列表元素类型。