【发布时间】:2019-06-13 19:45:18
【问题描述】:
当流的最后一个元素已被处理并且流被完全“消耗”时,是否存在注册回调的优雅方法?
尤其是当流源(如 DB 游标、Iterator<T> 或自定义 Supplier<T>)是有限的并且可以明确知道何时没有更多数据时。
例子:
public Stream<Row> query(String sql){
Connection c = dataSource.openConnection();
Stream<Row> rows = MyDB.query(sql).stream();
c.close();
return rows;
}
现在,立即关闭连接是徒劳的,最好在流完全消耗时安排关闭连接。
我知道有 onClose() API,但这依赖于消费者在流上显式调用 close()。
【问题讨论】:
标签: java java-stream