Por que um paralelismo ForkJoinPool duplica minha exceção?
assumindo que eu tenho o código como abaixo:
Future<Object> executeBy(ExecutorService executor) {
return executor.submit(() -> {
throw new IllegalStateException();
});
}
não há problema ao usarForkJoinPool#commonPool
, mas quando eu uso um paralelismoForkJoinPool
dobrará oIllegalStateException
. por exemplo:
executeBy(new ForkJoinPool(1)).get();
// ^--- double the IllegalStateException
Q1: por que o paralelismoForkJoinPool
dobrar oException
ocorre noCallable
?
Q2: como evitar esse comportamento estranho?