ThreadPoolExecutor: Задачи ставятся в очередь и не отправляются

У нас есть сценарий, когда задачи, переданные в ThreadPoolExecutor, выполняются долго. Когда пул потоков запущен, мы запускаем его с размером основного пула = 5, максимальным размером пула = 20 и размером очереди 10. В нашем приложении представлено около 10 задач. В большинстве случаев эти задачи выполняются в течение нескольких минут / часов и затем завершаются. Однако была ситуация, когда все 5 задач зависали при вводе / выводе. В результате размер пула ядра достиг максимума, но очередь в Threadpoolexecutor не была заполнена. Таким образом, дополнительные 5 заданий так и не получили возможности для выполнения. Пожалуйста, предложите, как мы можем справиться с таким сценарием? В такой ситуации лучше иметь меньшую очередь? Какой будет оптимальный размер очереди при инициализации threadPool?

Что касается зависших задач, есть ли способ вывести потоки из пула потоков? В этом случае как минимум другие задачи получат шанс на выполнение.

Ответы на вопрос(6)

Ваш ответ на вопрос