List集合:
在main方法中造10个线程,每个线程对list集合进行添加和输出操作。
ArrayList<String> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
new Thread(()->{
list.add(UUID.randomUUID().toString().substring(0,5));
System.out.println(Thread.currentThread().getName() + "线程, " + list);
},String.valueOf(i)).start();
}
输出结果:
发现会报异常:ConcurrentModificationException,这个异常时多线程读写异常。
然后我们使用方法将list集合变成线程安全的:
方法一:
使用Collections工具类:
jdk8.0文档:
代码演示:
ArrayList<String> list1 = new ArrayList<>()