Размер пула = 8, активные потоки = 0, задачи в очереди = 0, выполненные задачи = 5678. Почему активные потоки равны 0, когда пул потоков активен. Может ли кто-нибудь объяснить мне это. Это должно быть больше 0, верно?
1 ответ
ТЛ ; др
Я подозреваю, что вы установили размер своего основного пула на ноль или сказали, чтобы основные потоки истекли.
allowCoreThreadTimeOut( true )
Цитата из раздела Keep-alive times документа ThreadPoolExecutor
Javadoc:
По умолчанию политика поддержания активности применяется только в том случае, если потоков больше, чем corePoolSize, но метод
allowCoreThreadTimeOut(boolean)
можно использовать для применения этой политики тайм-аута и к основным потокам, пока поскольку значение keepAliveTime не равно нулю.
Передайте true или false этому методу, чтобы:
[установить] политику, определяющую, могут ли основные потоки истечь по тайм-ауту и завершиться, если в течение времени поддержания активности не поступило ни одной задачи, заменяясь при необходимости при поступлении новых задач.
setCorePoolSize( 0 )
Если вы установите размер основного пула равным нулю, все потоки в конечном итоге прекратят работу по тайм-ауту. В этом случае установка allowCoreTheadTimeOut
не имеет значения.
См. раздел Reclamation на этой странице Javadoc:
Вы можете настроить пул так, чтобы все неиспользуемые потоки в конечном итоге умирали, задав соответствующее время поддержания активности, используя нижнюю границу нулевых потоков ядра и/или задав параметр allowCoreThreadTimeOut(boolean).
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.