multithreading - Spring Batch - 如何在多个线程中读取一个大文件?

标签 multithreading spring file spring-batch

问题:读取大小 > 10 MB 的文件并使用 Spring Batch 将其加载到暂存表中。我们如何在读取文件时保持状态,以便在失败时重新启 Action 业?

根据文档, FileItemReader 不是线程安全的,如果我们尝试使其线程安全,我们最终会失去可重启性。所以基本问题是:

  • 有没有办法以块为单位读取文件,并且每个线程都知道它需要读取哪个块?
  • 如果我们使读取同步,在这种情况下需要进行哪些更改才能使作业可重新启动?

  • 如果有人遇到过类似的问题或对其性能有任何分析,将有助于我们做出决定。

    此外,任何指针或示例代码表示赞赏。

    最佳答案

    多线程只有在你的线程同时做不同的事情时才有用。例如,您可以在不同的 CPU 上运行两个线程。或者一个线程正在等待网络消息,而另一个线程正在绘制屏幕。

    但是在您的情况下,两个线程都将等待来自同一设备的相同 IO,因此使用多个线程毫无意义。

    另见此问题 Reading a file by multiple threads

    关于multithreading - Spring Batch - 如何在多个线程中读取一个大文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7275666/

    相关文章:

    c# - Parallel.For 中的变量

    c# - 如何使ConcurrentExclusiveSchedulerPair与async和await一起使用

    spring - 使用maven时spring配置文件放在哪里

    PHP CURL 下载文件

    python - "closable"队列的数据类型,用于处理多个生产者和消费者的项目流

    java - 关于同步的意义

    java - 从用户获取更多信息 - Spring Security

    java - java中多种格式的日期绑定(bind)器

    file - 使用批处理脚本重命名目录中的多个文件

    file - 如何使用公共(public) Gradle API 创建临时文件/文件夹?