标签:CopyOnWriteArrayList 5.3 CopyOnWrite 接口 链表 从零开始 BlockingDeque
并发编程从零开始(六)-BlockingDeque+CopyOnWrite
5.2 BlockingDeque
BlockingDeque定义了一个阻塞的双端队列接口:
该接口继承了BlockingQueue接口,同时增加了对应的双端队列操作接口。该接口只有一个实现,就是LinkedBlockingDeque,其核心数据结构如下所示,是一个双向链表。
对应的实现原理,和LinkedBlockingQueue基本一样,只是LinkedBlockingQueue是单向链表,而LinkedBlockingDeque是双向链表。
5.3 CopyOnWrite
CopyOnWrite指在“写”的时候,不是直接“写”源数据,而是把数据拷贝一份进行修改,再通过悲观锁或者乐观锁的方式写回。那为什么不直接修改,而是要拷贝一份修改呢?这是为了在“读”的时候不加锁,典型的空间换时间。
5.3.1 CopyOnWriteArrayList
和ArrayList一样,CopyOnWriteArrayList的核心数据结构也是一个数组:
读取数据的方法有:
所有读的方法都没有加锁,但是所有的修改操作都加了锁。
其他修改方法,例如remove和add类似,此处不再详述。
5.3.2 CopyOnWriteArraySet
CopyOnWriteArraySet 就是用 Array 实现的一个 Set,保证所有元素都不重复。其内部是封装的一个CopyOnWriteArrayList。
标签:CopyOnWriteArrayList,5.3,CopyOnWrite,接口,链表,从零开始,BlockingDeque 来源: https://www.cnblogs.com/yangchen-geek/p/15470912.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。