微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我是否必须在try-with-resources块中关闭终止的流式查询结果?

如何解决我是否必须在try-with-resources块中关闭终止的流式查询结果?

的Java API描述如下这个话题:

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

另请注意以下API Files.lines(Path, Charset))

返回的数据流封装Reader.如果需要的文件系统资源的及时处置,在try-与资源结构应该被用来确保数据流的close流操作完成后调用方法

底线是:如果流对应的资源在正常情况下需要在使用后关闭(例如IO),则在try-with-resources语句中使用它。

解决方法

在Spring Data JPA文档中,它说明了有关流的信息:

Stream可能包装了基础数据存储的特​​定资源,因此必须在使用后关闭。您可以使用close()方法或使用Java 7 try-with-
resources块来手动关闭Stream。

参见:http :
//docs.spring.io/spring-
data/jpa/docs/1.10.1.RELEASE/reference/html/#repositories.query-
streaming

如果我使用forEach,count或其他终端操作处理流,则应该已经将其关闭(并且不再重用),并且不必将流包装在其他try-
resources块中(假设我的块没有)不会抛出任何异常),或者我在这里错了吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。