Каким может быть допустимый вариант использования для установки размера основного пула на 0 в java 8? - PullRequest
2 голосов
/ 26 мая 2020
• 1000 Это не относится к java 8, даже если размер основного пула установлен на 0, создается новый поток.

ThreadPoolExecutor с corePoolSize 0 не должен выполнять задачи, пока очередь задач не заполнится

Итак, мой вопрос был бы в том, какие могут быть допустимые варианты использования, когда имеет смысл установить размер основного пула как 0 в java 8, или это больше не имеет смысла?

1 Ответ

3 голосов
/ 26 мая 2020

Странное поведение ThreadPoolExecutor в Java 5, когда пул ядра равен нулю, было ошибкой. По-видимому, это было тихо исправлено в Java 6.

Действительно, проблема, по-видимому, снова появилась в Java 7 (согласно https://bugs.openjdk.java.net/browse/JDK-7091003) в результате некоторой переделки. Затем это было признано ошибкой и исправлено.

Обратите внимание, что Параллелизм на практике описывает это как «кажущееся странное поведение» и не предлагает явно использовать его в своих code.


Итак, каков фактический вариант использования для установки corePoolSize на ноль?

Один из таких вариантов использования - это сделать то, что предлагает Параллелизм на практике , в:

Разработчики иногда стремятся установить размер ядра равным нулю, чтобы рабочие потоки в конечном итоге будут разорваны и, следовательно, не будут препятствовать выходу JVM.

И, в более широком смысле, другой вариант использования - это если вы хотите, чтобы потоки были разорваны для освобождения ресурсов. .. потому что пул потоков вряд ли будет использоваться в течение длительного времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...