使用lambda的parallelStream().forEach处理大的数据的时候,发现会有数据丢失或者下标越界问题
今天再处理kafka日志消息时,按批次每次处理10000条,最后发现每批次处理结果都会比实际数量少一些,最后对代码进行跟踪发现问题,记录下。
我们都知道parallelStream使用的时ForkJobTask。而Fork/Join框架是通过把一个大的任务不断的fork成许多子任务,然后多线程执行这些子任务,最后再join这些子任务得到最终结果数据。
也就是说,如果你有一个大的数据集要处理,它会将你的数据集切分成若干个小的集合,处理之后再进行聚合,但是我的数据集是ArrayList类型,他的add方法不
原创
2020-07-22 14:57:51 ·
4191 阅读 ·
0 评论