【问题标题】:Non-blocking file operations in spring-webfluxspring-webflux 中的非阻塞文件操作
【发布时间】:2022-02-05 10:42:13
【问题描述】:

我需要编写一些代码来管理 spring-webflux 服务的文件。第一个直觉是使用在常规应用程序中运行良好的文件/文件,但它们会阻塞。

所以,我用谷歌搜索了我想象的所有标准,但所有结果大多与上传/下载文件有关。

我的问题是 - 有没有办法在 spring-webflux 下以非阻塞方式管理文件(删除、复制、移动)?甚至是第 3 方库?

【问题讨论】:

    标签: java spring file spring-webflux


    【解决方案1】:

    Java NIO (New IO) 是 Java 的替代 IO API,意思是标准 Java IO 和 Java Networking API 的替代品。 NIO API 的一部分实际上是阻塞的——例如文件 API - 所以标签“非阻塞”会有点误导。

    尽管如此,Java NIO 使您能够进行非阻塞 IO。例如,线程可以要求通道将数据读入缓冲区。当通道将数据读入缓冲区时,线程可以做其他事情。一旦数据被读入缓冲区,线程就可以继续处理它。将数据写入通道也是如此。

    您可以在以下位置阅读更多信息:

    【讨论】:

    • 我认为这是一个很好的观点,但我希望对 reactor/webflux 更友好。我的 intellij 抱怨称 java.nio.file.Files.deleteIfExistsInappropriate blocking method call,我认为可能有更好的方法来做到这一点。
    • 不幸的是,仍有一些事情是你无法解决的。正如我在回答中所说,“NIO API 的一部分实际上是阻塞的——例如文件 API”。
    猜你喜欢
    • 2019-09-25
    • 1970-01-01
    • 2020-03-06
    • 2019-03-27
    • 2020-09-18
    • 2020-10-09
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多