我想使用迭代器从数据提取本身抽象数据处理算法。就像,而不是做dataSource.getNextObject()
只需要一个标准的java.util.Iterator作为输入并使用它。但是,JDK Iterator
正在阻止。并且使用Couchbase或Mongo作为数据源,它具有基于回调的非阻塞客户端库,阻塞迭代器无法实现目的。 JDK没有非阻塞的。
我一直在考虑对java.util.Iterator
进行封面,hasNext()
和next()
返回相应的CompletableFuture
。
我无法在这个主题上谷歌。为什么?这个想法太疯狂了,我做错了吗?
问题是:如果在项目中不允许阻止代码并且下一个/ hasNext操作可能会阻塞相当长的时间,那么如何使用迭代器呢。
更新:对CompletableFuture<E>
进行迭代无法正常工作,因为它不会涵盖hasNext()
,而hasNext()
可能需要实际执行阻止操作。