关闭Java 8 Stream

如果我们使用Java 8 Stream就像list.stream().filter(....).collect(..).....它什么时候关闭这个流?

作为下一个例子,我们关闭流我们是好的做法吗?

 Stream stream = list.stream(); String result = stream.limit(10).collect(Collectors.joining("")); stream.close(); 

通常没有必要关闭流。 您只需关闭使用IO资源的流。

来自Stream文档 :

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

如果需要关闭流,那么最佳做法是使用try-with-resources语句:

 try ( Stream stream = Files.lines(path, charset) ) { // do something }