spring批处理多线程处理器

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

  • 设置处理器类的输入和输出行

  • 将其提交给Executor服务

  • 获取所有未来对象并收集最终输出

现在,只要我通过添加taskExecutor使我的工作并行;我遇到问题,因为步骤1中设置的输入对象在步骤2中被覆盖,并且处理器被覆盖值调用 . 我试图搜索是否可以编写复合处理器,将任务并行委派给多个步骤,但它们只能以顺序方式工作 .

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

回答(1)

2 years ago

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