java集合安全性

    public static void main(String[] args) {
        // 第一代, Vector Hashtable 线程安全(同步方法)效率低下
        Vector v;


        // 第二代 ArrayList、HashMap、HashSet 线程不安全,效率高
        ArrayList list = new ArrayList();

        // 安全第一,不能要效率不要安全,如果涉及线程安全,怎么办
        List list2 = Collections.synchronizedList(list);


        // 第三代 Lock锁 并发请求越来越多,并发集合类应运而生   线程安全 性能还高
        // 性能提高:JDK7:1 Lock锁 2 分段(segment)锁而不是锁全部
        // 性能提高:JDK8:1 Lock锁 2 采用了比分段锁定效率更高,但是也更复杂的方式
        ConcurrentHashMap<String, String> ccmap = new ConcurrentHashMap<String, String>();

        // Lock锁,CopeOnWrite 读不加锁,写的时候另外复制数据,适合读操作多, 不能保证数据的实时一致。
        CopyOnWriteArrayList<Integer> cowList = new CopyOnWriteArrayList<Integer>();

        // 底层不是Map 而是CopyOnWriteArrayList 装饰模式。
        // list有序,set无序
        CopyOnWriteArraySet<Integer> cowSet = new CopyOnWriteArraySet<Integer>();
    }

附:
List : 有序可重
Set : 无序不可重
有序或无序是指是否按照其添加的顺序来存储对象。List 是按照元素的添加顺序来存储的。而 Set 的实现类都有一套自己的排序算法,每添加一个元素,都会按照其内部算法将元素添加到合适的位置,所以不能保证内部存储是按元素添加的顺序而存储的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章