如何解决我是否必须在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 举报,一经查实,本站将立刻删除。