集合类随笔

Vector

跟ArryList一样,只不过他的所有方法都被 syn关键子包裹了,使得它是线程安全的但是严重影响性能已经被弃用了

使集合变成只读

public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<>();
    list.add("1");
    Collection<String> listUnEdit = Collections.unmodifiableCollection(list);
    listUnEdit.add("te");
}

抛出异常

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.Collections$UnmodifiableCollection.add(Collections.java:1055)
    at com.javaDemo.collection.TestDemo.main(TestDemo.java:19)

如果集合类遇到线程安全问题怎么办

  1. 可以通过 Collections.synchronized()方法把一个线程不安全的集合转换成线程安全的集合

    public class SynCollectionDemo {
    
        private static ArrayList list = new ArrayList();
    
        public static void main(String[] args) {
            //把一个线程补权限的集合类转换成线程安全的类
            List synchronizedList = Collections.synchronizedList(list);
        }
    

    内部实现也跟Vector一样都是在方法上添加syn关键字

  2. 可以通过juc提供的锁,在内部操作数据的时候进行加锁处理

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。