JUC并发编程CopyOnWriteArrayList(四)

6.集合不安全

List不安全

package com.xizi.unsafe;

import java.lang.reflect.Array;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;

//java.util.ConcurrentModificationException 并发修改异常
public class ListTest {
    public static void main(String[] args) {
//        List<String> list = Arrays.asList("1", "2", "3");
//        list.forEach(System.out::println);

        //并发下arrayList 不安全
//        ArrayList<String> list = new ArrayList<>();
        //解决方案
//          1.Vector<String> list = new Vector<>(); //安全
//          2.List<String> list=Collections.synchronizedList(new ArrayList<>());
//          3. List<String> list = new CopyOnWriteArrayList<>();
        //CopyWrite 写入时复制
        //多线程调用的时候 ,list,读取的时候,固定的,写入(覆盖)
        //再写入的时候避免覆盖,造成数据问题
        //读写分离
//        CopyOnWriteArrayList 比 Vector NB在哪?
//       有 synchronized 执行的效率低(Vector)
//        CopyOnWriteArrayList  使用lock锁
        List<String> list = new CopyOnWriteArrayList<>();
        for (int i = 0; i <= 10; i++) {
            new Thread(()->{
                list.add(UUID.randomUUID().toString().substring(0,5));
                System.out.println(list);
            }).start();
        }

    }
}

猜你喜欢

转载自blog.csdn.net/weixin_45480785/article/details/105357857