欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

集合不安全

程序员文章站 2022-07-15 09:25:38
...
  • Arraylist线程不安全,add方法没有锁
  • 会出现ConcurrentModificationException()异常
  • vector线程安全,但是并发性下降

Arraylist出现异常

public class test07 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();

        for (int i = 1;i<=30;i++){
            new Thread(() -> {
                list.add(UUID.randomUUID().toString().substring(0,8));
                System.out.println(list);
            },String.valueOf(i)).start();

        }
    }
}
  • 解决方法:
  1. new Vector()<>;
  2. Collections.synchronizedList(new ArrayList<>());
  3. CopyOnWriteArrayList<>();读写分离
public class test07 {
    public static void main(String[] args) {
        List<String> list = Collections.synchronizedList(new ArrayList<>());
		 List<String> list = new CopyOnWriteArrayList<>();

        for (int i = 1;i<=30;i++){
            new Thread(() -> {
                list.add(UUID.randomUUID().toString().substring(0,8));
                System.out.println(list);
            },String.valueOf(i)).start();

        }
    }
}
相关标签: 线程