parallelStream是线程安全的吗
时间: 2023-11-30 15:43:06 浏览: 243
关于Java8 parallelStream并发安全的深入讲解
5星 · 资源好评率100%
根据提供的引用内容,可以得出结论:parallelStream并行流并不是线程安全的。在并发时存在数据丢失的情况,导致数据随机缺失。因此,在使用parallelStream时需要注意线程安全问题。
以下是一个演示parallelStream线程安全问题的例子:
```java
import java.util.ArrayList;
import java.util.List;
public class ParallelStreamDemo {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 10000; i++) {
list.add(i);
}
// 并行流
list.parallelStream().forEach(num -> {
if (num % 2 == 0) {
list.remove(num);
}
});
System.out.println(list.size()); // 输出结果不确定,可能小于10000
}
}
```
在上述代码中,我们使用parallelStream对一个包含10000个元素的列表进行遍历,并在遍历过程中删除其中的偶数元素。由于parallelStream不是线程安全的,因此在并发执行时会出现数据丢失的情况,导致最终输出的列表大小不确定,可能小于10000。
阅读全文