Обработка исключений из задач Java ExecutorServiceJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Обработка исключений из задач Java ExecutorService

Сообщение Anonymous »

Я пытаюсь использовать Java-класс ThreadPoolExecutor для запуска большого количества тяжелых задач с фиксированным количеством потоков. У каждой задачи есть много мест, в которых она может завершиться сбоем из-за исключений.

Я создал подкласс ThreadPoolExecutor и переопределил afterExecute метод, который должен обеспечивать любые неперехваченные исключения, возникающие во время выполнения задачи. Однако, похоже, у меня ничего не получается.

Например:

Код: Выделить всё

public class ThreadPoolErrors extends ThreadPoolExecutor {
public ThreadPoolErrors() {
super(  1, // core threads
1, // max threads
1, // timeout
TimeUnit.MINUTES, // timeout units
new LinkedBlockingQueue() // work queue
);
}

protected void afterExecute(Runnable r, Throwable t) {
super.afterExecute(r, t);
if(t != null) {
System.out.println("Got an error: " + t);
} else {
System.out.println("Everything's fine--situation normal!");
}
}

public static void main( String [] args) {
ThreadPoolErrors threadPool = new ThreadPoolErrors();
threadPool.submit(
new Runnable() {
public void run() {
throw new RuntimeException("Ouch! Got an error.");
}
}
);
threadPool.shutdown();
}
}
Вывод этой программы: «Все в порядке, ситуация нормальная!» даже несмотря на то, что единственный Runnable, отправленный в пул потоков, выдает исключение. Есть какие-нибудь сведения о том, что здесь происходит?

Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/224 ... vice-tasks
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»