Java@Java并发编程之支持并发的list集合你知道吗( 二 )
来看看使用JUC并发包下的:CopyOnWriteArrayList(写时复制list)来解决吧 。
先来看看这个类的add方法的源码:
从源码中 , 我们可以看到复制了一个新的list集合 , 将新元素在新集合中操作 。 那么为什么这种操作就不会出现并发异常呢?
因为这种思想 , 可以理解为读写分离的思想 。 因为get还是使用原来list的get的方法 。 写的时候 , 在复制一份原来的 , 然后再复制出来的基础上进行修改的 。 那么怎么保证数据问题呢?我们从源码中可以看到使用到了ReentrantLock(关于锁相关的 。 凯哥(凯哥Java:kaigejava)将在后面详细的讲解的)锁来控制的 。
那么现在使用CopyOnWriteArrayList来模拟下文章开头签到例子 。
【Java@Java并发编程之支持并发的list集合你知道吗】司小司再签到的时候 , 先把签到表复制一份 , 然后再新的复制出来的签到表中进行签到 。 小明是原来签到表查看自己的信息的 。 这样就不会出现争强情况了 。
- [科旅号]并发现气辉现象,火星内部很危险,NASA洞察号证实火星地震活跃
- 「千锋长沙」软件测试需要懂编程吗?,千锋全栈软件测试课程教程资源限时领
- 小智雅汇@C|编程的一些前置知识及底层(计算机组成与汇编)了解
- 「Java」Java中的网络编程(一)
- 【编程】你知道哪种编程语言最令开发人员讨厌吗?
- 『编程』12000字 史上最最最完整深入解析JVM,请先收藏再看!
- 『阿里巴巴』Java并发编程之CAS第三篇-CAS的缺点
- #滴滴出行#2020年最具影响力的4种编程语言 平均薪资20K+
- #Python#编程大神原来是这么来的,一篇文章带你走入大神的世界
- 「C++」C语言?c++?到底先学哪个才能更好的理解编程,这些你造吗