Умри ты нить - PullRequest
       22

Умри ты нить

4 голосов
/ 23 апреля 2009

У меня есть служба java.util.concurrent.Execution - исполнитель однопоточного пула потоков. Я подчиняюсь определенным задачам. Если задача выдает непроверенное исключение, поток умирает, но служба гарантирует, что новый поток будет создан, и последующие задачи будут выполнены в этом. Однако я не хочу эту функцию и все еще хочу использовать threadPoolExecutor. я хочу, чтобы сервис shutDownNow (), если задача выдает непроверенное исключение.

Каков наилучший способ достичь этого? Имеет ли смысл использовать фабрику пользовательских потоков, ограничивающую количество создаваемых потоков?

Ответы [ 2 ]

3 голосов
/ 23 апреля 2009

Вы можете создать подкласс ThreadPoolExecutor и переопределить метод afterExecute. У метода есть бросаемый параметр, который будет ненулевым, если возникла исключительная ситуация.

2 голосов
/ 23 апреля 2009

Вы можете завернуть свой threadPoolExecutor в ExecutorCompletionService. Затем непрерывно take() из него, получая Future с. Если future.get() выдает Exception, позвоните threadpoolexecutor.shutdown().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...