请选择 进入手机版 | 继续访问电脑版

年轻人不讲武德,一起聊聊List集合(五)

[复制链接]
唐少琼 发表于 2021-1-3 12:14:01 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
文章目次




  
一、List类图


  
2. ArrayList与CopyOnWriteArrayList聚集区别




  • 相同点:

  • 都是实现与List接口;
  • 底层接纳数组实现;
  • 查询效率高,增删效率低;


  • 差别点:

  • 线程安全方面:
    ⑴ ArrayList线程不安全;
    ⑵ CopyOnWriteArrayList聚集 add() / remove()方法通过ReentrantLock锁包管线程安全、get()方法线程不安全;
  • 扩容方面:
    ⑴ ArrayList扩容后是原数组长度的1.5倍;
    ⑵ CopyOnWriteArrayList每次扩容长度为原数组长度+1;


  
4. modCount答疑解惑

相信猿友在《不讲武德系列》各篇聚集源码分析中都常见到 modCount这个变量,到底什么意思呢,一起分析下:


  • 寄义:
    用来记载当前聚集操纵次数;
    比如在ArrayList,每一次调用add / remove / clear等方法时都会记载一次;
那 modCount 到底是作用来做什么的呢?这里牵扯到另一个重要的概念,Fail-Fast 机制:


  • 寄义:
    Fail-Fast 机制,快速失败机制;
    当某一个线程在使用迭代器的过程中,有其他线程修改了modCount,此时会通过modCount是否厘革来判断当前线程安全问题,如modCount发生厘革则抛出ConcurrentModificationException异常;
    注意:此机制出现在使用迭代器的过程中,发起各人使用循环时优先选用迭代器遍历。


  2. LinkedList

不讲武德,一起聊聊List聚集之LinkedList
  4. CopyOnWriteArrayList

不讲武德,一起聊聊List聚集之CopyOnWriteArrayList
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )