美文网首页
87.CopyOnWriteArrayList介绍

87.CopyOnWriteArrayList介绍

作者: SlideException | 来源:发表于2020-08-24 09:59 被阅读0次

CopyOnWriteArrayList 介绍

ArrayList是线程非安全的,而Vector或者是使用 Collections,
可以将 ArrayList 包装成一个线程安全的类。
不过这两种方法也有很大的缺点,那就是他们使用的都是独占锁,
独占式锁在同一时刻只有一个线程能够获取,效率太低。于是CopyOnWriteArrayList 应用而生了。

独占锁效率低:采用读写分离思想解决。
读操作不加锁,所有线程都不会阻塞。写操作加锁,线程会阻塞

写线程获取到锁,其他线程包括读线程阻塞,这咋办呢?
当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行 Copy,
复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。

CopyOnWriteArrayList并非一定线程安全
数组角标越界问题
https://www.jianshu.com/p/fc0ee3aaf2df
比如一个线程向容器中添加元素,一个线程来读取元素,此时有第三个线程进行删除元素操作,
读线程去读取容器中最后一个元素,读之前的时候容器大小为i,
当去读的时候删除线程突然删除了一个元素,这个时候容器大小变为了i-1,
读线程仍然去读取第i个元素,这时候就会发生数组越界。

相关文章

  • 87.CopyOnWriteArrayList介绍

    CopyOnWriteArrayList 介绍 ArrayList是线程非安全的,而Vector或者是使用 Col...

  • Runtime介绍---术语介绍

    1. 什么是Runtime Runtime又叫运行时,是一套C语言的API。 我们平时编写的OC代码,底层都是基于...

  • 介绍

    万物终有一天会消失殆尽,诸神出卖黎明,光明为黑暗所湮灭,日月皆痕,海潮鸣泣,幼雏嚎啕,生灵涂炭。 托里奥世纪第20...

  • 介绍😊

    大家好,我是beth,初入简书,不邀自来,还请各位见谅! 先说说我是怎么想着来的吧?这不是刚过了一个寒假嘛...

  • 介绍

    在这个世界上还有三个家族他们不受各个国家联合国管。但他们身上有着使命分别是帝国家族曲国家族圣国家族。他们隐藏在一个...

  • 介绍

    云轩:主角,星罗帝国的二皇子。从小就不能练气,被人们称为废物。直到12岁的时候,自己的武魂觉醒才能练气,双...

  • 介绍

    万花阁 神秘至极的组织,亦正亦邪。万花阁的人行动隐秘,至今未被发现所在地。听说组成成员均以花来命名。所到之处,皆留...

  • 介绍

    此书命曰元.八洲传。属九洲四传第二部。第一部,上古往事。上古往事乃元八洲传外传。前两部为战胜心魔,而第三部,大梦...

  • 介绍

    千肆篇 7月的天气燥热,但在红杏阁里这份燥热就别有一番风味。漫天的胭脂水粉的香味变成了调味剂,女人们千姿百媚,在...

  • 介绍

    该文集属于收录文集,里面的内容不全是本人创作,有收录个人喜欢的内容。 *(偏个人向)

网友评论

      本文标题:87.CopyOnWriteArrayList介绍

      本文链接:https://www.haomeiwen.com/subject/xsowjktx.html