关闭Java 8流

如果我们使用Java 8 Stream,例如list.stream().filter(....).collect(..).....何时关闭此流?

作为下一个示例,我们关闭流是不是一个好习惯?

Stream<String> stream = list.stream();

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

stream.close();

回答:

通常根本不需要关闭流。您只需要关闭使用IO资源的流。

从Stream文档中:

流具有BaseStream.close()方法和实现AutoCloseable,但是实际上几乎所有流实例在使用后都不需要关闭。通常,只有源是IO通道的流(例如由返回的Files.lines(Path,

Charset))才需要关闭。大多数流都由集合,数组或生成函数支持,而无需特殊的资源管理。(如果流确实需要关闭,则可以在try-with-

resources语句中将其声明为资源。)

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

try ( Stream<String> stream = Files.lines(path, charset) ) {

// do something

}

以上是 关闭Java 8流 的全部内容, 来源链接: utcz.com/qa/427371.html

回到顶部