Вступить в клуб →
сложнаявопросJava Core и многопоточность

Задачи в ExecutorService падают, а в логах пусто

Ночной джоб рассылки перестал доходить до части клиентов. Код выглядит так:

ExecutorService pool = Executors.newFixedThreadPool(4);

for (Order order : orders) {
    pool.submit(() -> notificationService.send(order));
}
pool.shutdown();

Внутри send для части заказов бросается NullPointerException. При этом в логах нет ни одной строки об ошибке, приложение работает дальше, часть уведомлений просто не уходит. Что происходит?

  • Поток пула умирает вместе с задачей, пул постепенно пустеет, и оставшиеся задачи не выполняются
  • Исключение уходит в UncaughtExceptionHandler потока, который по умолчанию ничего не печатает для пулов
  • Исключение перехватывается и сохраняется внутри Future, который никто не читает, поэтому оно нигде не видно
  • Пул автоматически повторяет упавшую задачу, и до логирования дело не доходит

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела