Почему Executors.newCachedThreadPool бросает java.util.concurrent. RejectedExecutionException во время отправляют

kbMemTable является хорошим кандидатом. Выполнения в памяти, быстро, multi-threadding. Используемый, чтобы быть свободным.

Components4Developers

17
задан Krishna Kumar 5 October 2009 в 12:13
поделиться

2 ответа

Вам нужно будет предоставить образцы кода того, как вы создаете экземпляр и вызываете submit в пуле (IP не должен быть проблемой, поскольку нам не нужны подробности внутренних компонентов ваших Callable классов или чего-то в этом роде).

Основываясь на предоставленной вами информации, вы почти наверняка где-то закрываете службу исполнителя, прежде чем отправлять ему вызываемый объект. Проверьте, выполняете ли вы какие-либо вызовы к shutdown или shutdownNow , и если да, убедитесь, что вы не добавляете задачи после этого момента.

Кроме того, вы можете зарегистрировать свой собственная реализация java.util.concurrent.RejectedExecutionHandler для помощи в отладке;

30
ответ дан 30 November 2019 в 10:27
поделиться

Я не вижу нигде в вызове методов Executors.newCachedThreadPool () , где выдается исключение RejectedExecutionException . Есть только три случая, когда он появляется в Java 6:

  • при вызове execute () в ThreadPoolExecutor и достигается максимальный размер пула.
  • при вызове execute () в ThreadPoolExecutor в то же время, что и shutdownNow , и по существу проиграл гонку с вызовом shutdownNow .
  • при попытке запланировать выполнение исполняемого файла в ScheduledThreadPoolExecutor после завершения работы исполнителя.
25
ответ дан 30 November 2019 в 10:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: