Страницы

Поиск по вопросам

пятница, 12 июля 2019 г.

Что вернет submit(), если таск не был успешно добавлен в очередь задач?

У меня создается пул подобным образом: pool = new ThreadPoolExecutor(1, 1, 1, TimeUnit.MINUTES, new ArrayBlockingQueue(20),new ThreadPoolExecutor.DiscardPolicy()); Возник такой вопрос: что вернет вызов pool.submit(), если будет сабмитится таск по счету больший размера очереди задач, в данном случае 21-ый. Вернет ли он обычный Future, или null. В javadoc сказано, что будет сгенерированно RejectedException, но у меня прописан DiscardPolicy.


Ответ

Из документации: If the task cannot be submitted for execution, either because this executor has been shutdown or because its capacity has been reached, the task is handled by the current RejectedExecutionHandler. DiscardPolicy - и есть RejectionExecutionHandler, который, цитируя: Does nothing, which has the effect of discarding task r т.е молча выкинет данный таск.

Комментариев нет:

Отправить комментарий