spring批处理多线程处理器

时间:2017-10-02 21:50:40

标签: java spring concurrency spring-batch

我正在尝试使用多个处理器类处理处理器步骤中的记录。这些类可以并行工作。目前我已经编写了一个多线程步骤,我

  1. 设置处理器类的输入和输出行
  2. 将其提交给Executor服务
  3. 获取所有未来对象并收集最终输出
  4. 现在,只要我通过添加taskExecutor使我的工作并行;我遇到问题,因为步骤1中设置的输入对象在步骤2中被覆盖,并且处理器被覆盖的值调用。我试图搜索是否可以编写复合处理器,将任务并行委派给多个步骤,但它们只能以顺序方式工作。

    任何输入都会非常有用。谢谢!

1 个答案:

答案 0 :(得分:0)

欢迎来到并发。当你不遵循让你处于安全确定性世界的道路时,你可以让自己陷入麻烦之中。如果使用纯函数,您可以摆脱所有问题。由于您的函数没有任何副作用,所有变量都应该是最终的,如果您坚持这一点,您会发现您不会遇到任何并发问题。一般来说,远离Java附带的线程库。您应该将线程池和执行程序等视为资源。可能应该阅读有关并发性,锁定,volatile变量,为什么这些较低级别的结构难以使用,然后查看更高阶的构造,如promises,future和actors。