我创建了一个弹出批处理作业,它读取平面CSV文件的块(提交级别= 10)并将输出写入另一个平面文件。干净利落。 为了测试本地扩展,我还使用具有10个线程池的TaskExecutor配置了tasklet,从而通过使用多线程步骤模式引入了并行性。 正如预期的那样,这些线程会同时读取项目,直到它们的块被填满并且块被写入输出文件。 同样如预期的那样,由于同时读取,项目的顺序已经改变。 但是有可能维持固定顺序,最好还是利用使用多线程获得的性能提升吗?
答案 0 :(得分:1)
我想不出一个简单的方法。解决方法是在所有行前面添加一个ID,该ID在读取时按顺序创建。完成作业后,按ID对行进行排序。听起来很讨厌,但应该有用。
答案 1 :(得分:0)
我认为没有任何简单的解决方案,但只使用一个编写器线程(写入时也执行排序)和多个读取线程可以工作,但它不会具有可扩展性。