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 的实现类都有一套自己的排序算法,每添加一个元素,都会按照其内部算法将元素添加到合适的位置,所以不能保证内部存储是按元素添加的顺序而存储的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值