为什么Java 8 Stream类AutoCloseable?

在Java 8中,Stream类实现了AutoCloseable。 这意味着应该显式关闭流实例。

我理解为什么文件处理程序和数据库连接是可关闭的。 但为什么流?

我认为Stream的当前文档/ javadoc非常清楚:

Streams有一个BaseStream.close()方法并实现AutoCloseable,但几乎所有的流实例实际上都不需要在使用后关闭。 通常,只有源为IO通道的流(例如Files.lines(Path,Charset)返回的流)才需要关闭。 大多数流都由集合,数组或生成函数支持,不需要特殊的资源管理。 (如果流确实需要关闭,则可以在try-with-resources语句中将其声明为资源。)