1.对大量的数据进行分段处理;(向上取余)
代码示例:
public List<List<FrApplyGuaranteeInfo>> segmentList(List<FrApplyGuaranteeInfo> list ,int segmentSize) {
int limit = (list.size() + segmentSize - 1) / segmentSize;
List<List<FrApplyGuaranteeInfo>> segmentList =
Stream.iterate(0, n -> n + 1).limit(limit).parallel().map(a -> list.stream().
skip(a * segmentSize).limit(segmentSize).parallel().collect(Collectors.toList())).collect(Collectors.toList());
return segmentList;
}
2.通过threadPoolTaskExcetor.submit()方法进行多线程任务处理
示例代码:
第一步分段处理后的list
lists.forEach({list->{
threadPoolExecutor.submit(new xxxxTask());
})
第二步:具体的task需要实现callalbe
示例代码如下:
@Slf4j
public class Dow