java - 具有固定顺序的Spring Batch多线程作业

标签 java multithreading spring spring-batch

我创建了一个 spring 批处理作业,它读取一个平面 CSV 文件的 block (提交级别 = 10)并将输出写入另一个平面文件。干净利落。 为了测试本地缩放,我还为 tasklet 配置了一个带有 10 个线程池的 TaskExecutor,从而通过使用多线程步进模式引入了并行性。 正如预期的那样,这些线程并发读取项目,直到它们的 block 被填满并将 block 写入输出文件。 也正如预期的那样,由于并发阅读,项目的顺序发生了变化。 但是是否有可能保持固定的顺序,最好仍然利用通过使用多线程获得的提高的性能?

最佳答案

我想不出一个简单的方法。一种解决方法是在所有行前加上一个 ID,该 ID 在阅读时按顺序创建。完成工作后,按 id 对行进行排序。听起来很老套,但应该可行。

关于java - 具有固定顺序的Spring Batch多线程作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7120110/

相关文章:

java - Spring Kafka - 防止消费者在 Spring Boot 构建期间连接 Kafka 主题

java - 自定义 Swing 控件中的可访问性模仿了 native 控件?

java - 不同显示器之前发生的情况

spring - 无法创建配置,因为找不到 Bean 验证提供程序。将像 Hibernate Validator (RI) 这样的提供程序添加到您的类路径中

java - Spring数据mongo在Query中使用OR

java - 如何使用jaxb创建java对象

java - 使用 Jsoup 从 html 代码中提取数据

java - 如果多个线程访问同一个私有(private)方法,变量值会混合吗?

c++ - 停止接受新连接

spring - 如何在 Spring Framework 4 中初始化应用程序上下文