Когда ты вызываешь submit() на экземпляре ExecutorService с переполненной очередью, система выбрасывает RejectedExecutionException, чтобы сигнализировать, что задача не может быть принята.
ExecutorService использует политику отклонения для обработки этого сценария. По умолчанию он применяет AbortPolicy, которая сразу же выбрасывает RejectedExecutionException вместо того, чтобы ставить задачу в очередь или молча её отбрасывать.
RejectedExecutionException
Это исключение указывает на то, что:
ExecutorService позволяет настраивать различные политики отклонения:
AbortPolicy — выбрасывает исключение (по умолчанию)CallerRunsPolicy — выполняет задачу в потоке вызывающей стороныDiscardPolicy — молча отбрасывает задачуDiscardOldestPolicy — удаляет самую старую задачу и добавляет новуюПри работе с ExecutorService реализуй грамотную обработку исключений, чтобы корректно справляться с ситуациями RejectedExecutionException. Если поведение по умолчанию не подходит для твоего приложения, рассмотри возможность написания собственной политики отклонения.
По умолчанию, когда очередь задач ExecutorService переполнена и вызывается submit(), политика отклонения AbortPolicy сразу же выбрасывает RejectedExecutionException.
Новый — ещё не проверен сообществом
Вы