— Привет, Амиго!
16
Задача
Java Multithreading,
8 уровень,
8 лекция
Недоступна
Знакомство с Executors
Знакомство с Executors
16
Задача
Java Multithreading,
8 уровень,
8 лекция
Недоступна
Знакомство с ThreadPoolExecutor
Знакомство с ThreadPoolExecutor
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
put()у интерфейсаBlockingQueueгарантировано добавит задачу в очередь. Но при этом он является блокирующим, и если задач много, они тяжеловесные и потоки из пула с ними не справляются, приложение просто повиснет. Методadd()наоборот, реализован неблокирующим, и в случае, когда очередь переполнена, он выброситIllegalStateException. Но при этом сохраняется возможность повесить на пул потоков обработчик отклонённых задач при помощи методаsetRejectedExecutionHandler()классаThreadPoolExecutor. Например, можно их собрать в коллекцию, после чего снова попытаться позже отправить на исполнение. Соответственно, использование методаadd()является более гибким подходом.