CopyOnWriteArrayList源码学习
参数及其含义可重入互斥锁。用于并发控制。保证操作的原子性。finaltransientReentrantLocklock=newReentrantLock();对象数组,存储元素对象。加上volatile关键字,保证并发过程中数据的可见性。privatetransientvolatileObject[]array;常用方法构造函数publicCopyOnWriteArrayList(){setArray(newObject[0]);}以无参构造函数为例,调用setArray方法给array变量赋值。add方法publicbooleanadd(Ee){finalReentrantLocklock=this.lock;lock.lock();try{Object[]elements=getArray();intlen=elements.length;Object[]newElements=Arrays.copyOf(elements,len+1);newElements[len]=e;setArray(newElements);returntrue;}finally{lock.unlock();}}添加元素到列表中。首先获取锁final ReentrantLock lock = this.lock;final关键字修饰,意味着引用本身不能改变,即不能再让这个引用指向另一个对象。lock.lock();对接下来的操作上锁。try块内核心逻辑:获取当前的数组对象,及其长度。然后将数组复制到一个长度为len+1的新数组中。将元素添加到数组结尾,然后调用setArray方法将数组赋值给array,返回true。lock.unlock();lock和unlock要成对出现,finally中进行解锁。remove方法根据索引删除publicEremove(intindex){
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2417084.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!