背景
ArrayList 这个集合本来就是线程不安全的,当我们多线程跑数据,往ArrayList里面添加数据的时候,前面的数据有可能被覆盖,为了解决这个问题,我们使用
synchronized关键字。现在我们还可以在不使用关键字的情况下往集合里面添加数据,并且数据是安全的,我们就可以使用CopyOnWriteArrayList这个数组
JDK1.5引入的J.U.C包中,又实现了一个线程安全版的ArrayList——CopyOnWriteArrayList。
代码实现
public class JUC {
public static void main(String[] args) {
CopyOnWriteArrayList<String> strings = new CopyOnWriteArrayList<>();
for(int i=0;i<10000;i++){
new Thread(() -> {
strings.add(Thread.currentThread().getName());
}).start();
}
try {
Thread.sleep(Long.parseLong("3000"));
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(strings.size());
}
}