【Java】CopyOnWriteArrayList
来源:互联网 发布:数据透视显示百分比 编辑:程序博客网 时间:2024/05/16 11:26
ArrayList是非线程安全的,多线程版本是CopyOnWriteArrayList,思路是“快照”。就是读取不会上锁,修改会上锁,但是修改时会拷贝一份出来,在拷贝的数组中修改,修改完了再设置回去。所以读取可能无法读到最新的,如果在读的同时其他修改,这个修改读不到。不会影响。适用于读多的应用。
private E get(Object[] a, int index) { return (E) a[index]; }
public boolean add(E e) { final ReentrantLock lock = this.lock; lock.lock(); try { Object[] elements = getArray(); int len = elements.length; Object[] newElements = Arrays.copyOf(elements, len + 1); newElements[len] = e; setArray(newElements); return true; } finally { lock.unlock(); } }
其他remove和set类似。
阅读全文
0 0
- java CopyOnWriteArrayList
- 【Java】CopyOnWriteArrayList
- Java Concurrent --CopyOnWriteArrayList
- JAVA 笔记 CopyOnWriteArrayList
- java CopyOnWriteArrayList的使用
- java.util.concurrent.CopyOnWriteArrayList
- java CopyOnWriteArrayList的使用
- java CopyOnWriteArrayList使用
- java CopyOnWriteArrayList的使用
- java CopyOnWriteArrayList的使用
- Java CopyOnWriteArrayList分析
- java并发容器-CopyOnWriteArrayList
- java CopyOnWriteArrayList的使用
- java CopyOnWriteArrayList的使用
- java CopyOnWriteArrayList的使用
- Java的 CopyOnWriteArrayList
- java CopyOnWriteArrayList的使用
- Java CopyOnWriteArrayList 源码分析
- javascript中express模块的使用
- jsp文件编译时报unable to compile class for jsp
- 获取一个整数的每一位并正序输出
- SpringMVC rest风格(Post增 Delete删 Put改 get查)
- Activity之应用进程创建流程简析
- 【Java】CopyOnWriteArrayList
- 【bzoj2318】 Spoj4060 game with probability Problem
- Avoid non-default constructors in fragments: use a default constructor plus Fragment报错的解决方法
- leetcode72难动态规划
- Java 创建对象的四种方式
- SQL语句中in和exists的区别
- PAT 1028人口普查
- 11g RAC 更改归档模式
- 网络基础(CRC、NAT、URG、PSH、tcp定时器)