isCancelled()
дает мне флаг true
при выполнении callable()
с использованием метода .invokeAll()
в ExecutorService
.Если я попытаюсь использовать .submit()
, я получу false
в противном случае.Как получить истинное значение при использовании метода invokeAll()
?
ExecutorService executorService =
Executors.newSingleThreadExecutor();
Set<Callable<String>> callables = new.
HashSet<Callable<String>>();
callables.add(new Callable<String>() {
public String call() throws Exception {
executeCommand();
return "Task 1";
}
});
callables.add(new Callable<String>() {
public String call() throws Exception {
executeCommand();
return "Task 2";
}
});
callables.add(new Callable<String>() {
public String call() throws Exception {
executeCommand();
return "Task 3";
}
});
List<Future<String>> futures =
executorService.invokeAll(callables);
for(Future<String> future : futures){
System.out.println(future.isCancelled());
System.out.println("future.get = " + future.get());
}
executorService.shutdown();
Рассмотрим приведенный выше пример, где executeCommand () имеет некоторую логику для выполнения параллельного кода, который оборачивается вокруг заданий.Я получаю правду, используя метод isCancelled ().Используя ExecutorService.submit (), он выдает false.
Пожалуйста, помогите.