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 的實現類都有一套自己的排序算法,每添加一個元素,都會按照其內部算法將元素添加到合適的位置,所以不能保證內部存儲是按元素添加的順序而存儲的。

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