我创建了一个 spring 批处理作业,它读取一个平面 CSV 文件的 block (提交级别 = 10)并将输出写入另一个平面文件。干净利落。 为了测试本地缩放,我还为 tasklet 配置了一个带有 10 个线程池的 TaskExecutor,从而通过使用多线程步进模式引入了并行性。 正如预期的那样,这些线程并发读取项目,直到它们的 block 被填满并将 block 写入输出文件。 也正如预期的那样,由于并发阅读,项目的顺序发生了变化。 但是是否有可能保持固定的顺序,最好仍然利用通过使用多线程获得的提高的性能?
最佳答案
我想不出一个简单的方法。一种解决方法是在所有行前加上一个 ID,该 ID 在阅读时按顺序创建。完成工作后,按 id 对行进行排序。听起来很老套,但应该可行。
关于java - 具有固定顺序的Spring Batch多线程作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7120110/