博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3.3.5 高效读取:不变模式下的CopyOnWriteArrayList
阅读量:5332 次
发布时间:2019-06-14

本文共 721 字,大约阅读时间需要 2 分钟。

码分析:读写(get,add)

  一:get 方法

private E get(Object[] a, int index) {
return (E) a[index]; } 可以看到读取数据的时候 没有添加任何限制。和ArrayList的方法一致 二:add 方法
1.public boolean add(E e) {
2. final ReentrantLock lock = this.lock; 3. lock.lock(); 4. try {
5. Object[] elements = getArray(); 6. int len = elements.length; 7. Object[] newElements = Arrays.copyOf(elements, len + 1); 8. newElements[len] = e; 9. setArray(newElements); return true; } finally {
lock.unlock(); } } 可以看到在写入的时候 使用了ReentrantLock进行控制 ,可以看到在第7步,CopyOnWriteArrayList是先复制一个当前的list,并且在复制的list进行写入,然后写入成功,在步骤9将新的list赋值给当前的list
 

 

 

转载于:https://www.cnblogs.com/anxbb/p/8467146.html

你可能感兴趣的文章
关于python中带下划线的变量和函数 的意义
查看>>
asp.net 写入excel时,不能更新。数据库或对象为只读。
查看>>
linux清空日志文件内容 (转)
查看>>
jsp中对jstl一些标签的引用方式
查看>>
安卓第十三天笔记-服务(Service)
查看>>
Servlet接收JSP参数乱码问题解决办法
查看>>
【bzoj5016】[Snoi2017]一个简单的询问 莫队算法
查看>>
Ajax : load()
查看>>
分布式版本控制系统
查看>>
MySQL-EXPLAIN执行计划Extra解释
查看>>
Zookeeper概述
查看>>
Zookeeper一致性级别
查看>>
单例模式的几种实现方式及对比
查看>>
第十二周学习记录
查看>>
HDU 1712 ACboy needs your help (分组背包模版题)
查看>>
共享内存
查看>>
从零开始学JavaWeb
查看>>
第33天-文件I/O _2(2013.09.03)
查看>>
讨厌的 StorageFolder.GetFileAsync 异常。
查看>>
Tomcat源码浅析
查看>>