Camel Splitter并行处理数组列表 – 并发访问问题

使用Camel拆分ArrayList并并行处理每个项目最多10个线程。 以下是配置。 线程池配置文件设置为最大线程数= 10。

    ${body}    java.lang.Exception  true        

bean:reportRepository?method=getPendingTransactions获取ArrayList并传递给Splitter。

processReportChannel是处理项目的处理器。

问题:作业启动时它会启动10个线程,但有些线程正在拾取相同的项目。 例如,如果我在ArrayList,thread_no_1和thread_no_2中有item_no_1到10,或者有时候更multithreading正在拾取,那么就说item_no_2。 是因为Array List不是线程安全的,Splitter不管理它吗?

我不是这方面的专家,需要帮助指出问题所在。

我测试了以下(更简单)设置​​:

      ${body}         

测试:

  List list = new ArrayList<>(); for (int i = 0; i < 1000; i++) { list.add("And we go and go: " + (i + 1)); } template.sendBody("direct:start", list); 

使用此设置,没有任何条目处理两次。 因此,处理器中必定存在导致问题的内容,即多个线程会拾取相同的列表项。