Нужно ли выполнять пул потоков Java, на который больше нет ссылок? - PullRequest
0 голосов
/ 30 мая 2018

Нужно ли для завершения работы пула потоков Java, на который больше нет ссылок, jvm автоматически освобождает ресурсы потока?

1 Ответ

0 голосов
/ 30 мая 2018

См. doc :

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

Однако по умолчанию потоки в пуле не завершаются автоматически, они ожидают новых задач.Таким образом, ресурсы не будут освобождены.

Если вы хотите, чтобы пулы, на которые нет ссылок, были возвращены, даже если пользователи забывают вызывать shutdown (), то вы должны организовать, чтобы неиспользуемые потоки в конечном счете умирали, установивсоответствующее время поддержания активности, используя нижнюю границу потоков с нулевым ядром и / или настройку allowCoreThreadTimeOut (логическое значение).

А в моем личном опыте я получил OutOfMemoryошибка, потому что не звонил shutdown или allowCoreThreadTimeOut.

...