Почему Threadpool ставит задачу в очередь вместо повторного использования простаивающих потоковJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему Threadpool ставит задачу в очередь вместо повторного использования простаивающих потоков

Сообщение Anonymous »

Создание ThreadPool

Код: Выделить всё

@PostConstruct
public void postConstruct() {
threadPool = new ThreadPoolExecutor(corePoolSize != 0 ? corePoolSize : defaultPoolSize, maxPoolSize != 0 ? maxPoolSize : defaultMaxPoolSize, defaultKeepAliveTime, TimeUnit.SECONDS,
new LinkedBlockingQueue(300000));
}
значения, переданные из файла свойств

Код: Выделить всё

#ThreadPool
corePool.Size=200
maxPool.Size=400
queue.Capacity=999999
KeepAlive=10
Я отправляю задачу указанным ниже способом

Код: Выделить всё

  public  Future submitCall(Callable callable) {
logger.info("Submitting , total task {}, active count {} completed count {} queue size {}, threads in pool currently {}, largest thread pool {} ",
threadPool.getTaskCount(), threadPool.getActiveCount(), threadPool.getCompletedTaskCount(),
threadPool.getQueue().size(), threadPool.getPoolSize(), threadPool.getLargestPoolSize() );
return threadPool.submit(callable);
}
журналы

Код: Выделить всё

2024-11-27 13:46:33,963 [INFO ]---[DAExecutorService.java]---[http-nio-9201-exec-2]: Submitting , total task 200, active count 49 completed count 151 queue size 0, threads in pool currently 200, largest thread pool 200
2024-11-27 13:46:33,963 [INFO ]---[DAExecutorService.java]---[http-nio-9201-exec-2]: Submitting , total task 201, active count 49 completed count 151 queue size 1, threads in pool currently 200, largest thread pool 200
2024-11-27 13:46:33,964 [INFO ]---[DAExecutorService.java]---[http-nio-9201-exec-2]: Submitting , total task 202, active count 49 completed count 152 queue size 1, threads in pool currently 200, largest thread pool 200
2024-11-27 13:46:33,965 [INFO ]---[DAExecutorService.java]---[http-nio-9201-exec-2]: Submitting , total task 203, active count 49 completed count 152 queue size 2, threads in pool currently 200, largest thread pool 200
2024-11-27 13:46:33,966 [INFO ]---[DAExecutorService.java]---[http-nio-9201-exec-2]: Submitting , total task 204, active count 50 completed count 152 queue size 2, threads in pool currently 200, largest thread pool 200
2024-11-27 13:46:33,967 [INFO ]---[DAExecutorService.java]---[http-nio-9201-exec-2]: Submitting , total task 205, active count 50 completed count 152 queue size 3, threads in pool currently 200, largest thread pool 200
Как мы знаем, для каждой задачи создается новый поток до тех пор, пока не будет достигнут размер основного пула. Однако, как только размер основного пула достигнут, журналы показывают, что количество выполненных задач равно 151, а количество активных задач — 49. Простые потоки можно рассчитать как размер пула — активные потоки, что в данном случае составляет 200–49. . Учитывая, что существуют свободные потоки, почему они не используются повторно для обработки новых задач, а не ставят их в очередь?

Подробнее здесь: https://stackoverflow.com/questions/792 ... le-threads
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»