Почему класс Java 8 Stream AutoCloseable?

В Java 8 класс Stream реализует AutoCloseable. Это означает, что экземпляр потока должен быть явно закрыт.

Я понимаю, почему обработчики файлов и подключения к БД являются закрывающимися. Но почему потоки?

Ответы

Ответ 1

Я думаю, что текущая документация /javadoc of Stream довольно ясна:

Потоки имеют метод BaseStream.close() и реализуют AutoCloseable, но почти все потоковые экземпляры фактически не нужно закрывать после использования. Как правило, только потоки, источником которых является IO-канал (такой поскольку те, которые возвращаются файлами Files.lines(Path, Charset)), требуют закрытия. Большинство потоков поддерживаются коллекциями, массивами или генерируют функций, которые не требуют специального управления ресурсами. (Если поток требует закрытия, его можно объявить как ресурс в try-with-resources.)