我有一个迭代器,我会使用并行流来处理我的集合的每个条目。所以我写了这段代码
int sum = StreamSupport.stream(Spliterators.spliteratorUnknownSize(rowIterator, Spliterator.ORDERED), true)
.map(row -> insertDataFromExcel(row, user))
.mapToInt(Integer::intValue).sum();
因此,每个条目都由我的方法处理,如果条目存储在DB上,则返回1;如果在处理期间发生任何异常,则返回0。最后,我将每个int求和,以获得正确处理和存储的元素数。
insertDataFromExcel
处理excel文件的每一行,使用Workbook
org.apache.poi
个包打开。所有解析阶段都运行正常,当我尝试将此实体保存到我的数据库时出现问题:在持久化实体之前,我通过一个简单的查询在我的数据库中找到了可能的重复。此查询使用JpaRepository
执行。
上面的代码我的方法正确执行但是在执行后我进入了一个无限循环而我无法获得int值,更多的执行被锁定在这个代码点而不继续。
如果删除Spliterators
的并行格式,则一切正常。
有什么建议吗?