如果我们像这样使用 Java 8 Streamlist.stream().filter(....).collect(..).....
这个流什么时候关闭?
作为下一个示例,我们关闭流是一种好的做法吗?
Stream<String> stream = list.stream();
String result = stream.limit(10).collect(Collectors.joining(""));
stream.close();
通常根本不需要关闭流。您只需要关闭使用 IO 资源的流即可。
来自流文档 https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html:
流有一个BaseStream.close()
方法与实施AutoCloseable
,但几乎所有流实例实际上并不需要在使用后关闭。一般来说,只有源是 IO 通道的流(例如由Files.lines(Path, Charset)
)将需要关闭。大多数流由集合、数组或生成函数支持,不需要特殊的资源管理。 (如果流确实需要关闭,则可以在 try-with-resources 语句中将其声明为资源。)
If您需要关闭流,那么最佳实践是使用 try-with-resources 语句:
try ( Stream<String> stream = Files.lines(path, charset) ) {
// do something
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)