Исключения NullPointerException
генерируются и перехватываются, но для их просмотра необходимо проверить Future
экземпляры, возвращаемые вызовами service.submit
:
Изменение вашего цикла следующим образом:
for (int i = 0; i < 10; i++) {
Future f = service.submit(() -> manager.incrementAndReport());
try {
System.out.println (f.get ());
}
catch (ExecutionException exex) {
System.out.println (exex);
}
catch (InterruptedException intEx) {
System.out.println (intEx);
}
}
выведет:
java.util.concurrent.ExecutionException: java.lang.NullPointerException
java.util.concurrent.ExecutionException: java.lang.NullPointerException
java.util.concurrent.ExecutionException: java.lang.NullPointerException
java.util.concurrent.ExecutionException: java.lang.NullPointerException
java.util.concurrent.ExecutionException: java.lang.NullPointerException
java.util.concurrent.ExecutionException: java.lang.NullPointerException
java.util.concurrent.ExecutionException: java.lang.NullPointerException
java.util.concurrent.ExecutionException: java.lang.NullPointerException
java.util.concurrent.ExecutionException: java.lang.NullPointerException
java.util.concurrent.ExecutionException: java.lang.NullPointerException
Вы также увидите, что исключения будут выброшены, если вы окружите оператор System.out.println(count.incrementAndGet() + "here");
try-catch:
private void incrementAndReport() {
try {
System.out.println(count.incrementAndGet() + "here"); //does not print
}
catch (Exception exc) {
System.out.println (exc);
}
}