【发布时间】:2022-02-07 02:56:08
【问题描述】:
你知道是否有可能以真正非阻塞的方式创建文件行的 Flux 吗?
我找到的最佳解决方案是下一个:
Flux.using(
() -> Files.lines(PATH),
Flux::fromStream,
Stream::close
);
尽管它看起来没有阻塞,但实际上它是阻塞的。
从文件中读取所有行作为流。与 readAllLines 不同,这 方法不会将所有行读入列表,而是填充 在流被消耗时懒惰地。
返回的流封装了一个Reader。
是否可以从 AsynchronousFileChannel 创建 Flux?
提前谢谢你
【问题讨论】:
-
你认为它为什么会阻塞?甚至这篇文章也描述了这种技术:baeldung.com/java-nio2-async-file-channel.
-
嘿,阿尔乔姆。我不认为 AsynchronousFileChannel 是阻塞的,我在上面的代码示例中讲述了 Files.lines(PATH)
-
为什么会被屏蔽?
-
您能否提供一个最小完整示例来说明问题?特别是,
publishOn()和subscribeOn()运算符使用哪些调度程序? -
我认为这里不应该讨论调度程序。我首先想看看这些行的流被阻止的所有论点。
标签: java nio project-reactor nonblocking nio2