Я не могу заставить Java-утверждения срабатывать при использовании внутри фьючерсов.
Как видно из приведенного ниже примера, я создаю список из одной задачи, которую затем выполняю с помощью .invokeAll.,Он выводит строку, но даже при запуске с -ea
утверждение не срабатывает.Однако он срабатывает, если я обмениваюсь ex.invokeAll(test)
с ex.invokeAll(test).get(0).get()
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
public class test {
public static void main(String[] args) throws InterruptedException, ExecutionException {
var ex = Executors.newWorkStealingPool();
List<Callable<Void>> test = new ArrayList<>();
test.add(() -> {
System.out.println("I run");
assert false;
return null;
});
ex.invokeAll(test);
}
}
Я запускаю это из командной строки, используя Java 11.0.1