Java-List线程不安全问题
List线程不安全
实例
public class DemoTest {
volatile List<Integer> volatileList;
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 10000; i++) {
list.add(i);
}
System.out.println(list.size());
List<Integer> streamList = new ArrayList<>();
list.parallelStream().forEach(streamList::add);
System.out.println(streamList.size());
List<Integer> streamVolatileList = new ArrayList<>();
list.parallelStream().forEach(streamVolatileList::add);
System.out.println(streamVolatileList.size());
List<Integer> copyOnWriteList = new CopyOnWriteArrayList<>();
list.parallelStream().forEach(copyOnWriteList::add);
System.out.println(copyOnWriteList.size());
}
}
结果
10000
4632
4371
10000