Java@Java并发编程之支持并发的list集合你知道吗( 二 )


来看看使用JUC并发包下的:CopyOnWriteArrayList(写时复制list)来解决吧 。
先来看看这个类的add方法的源码:
从源码中 , 我们可以看到复制了一个新的list集合 , 将新元素在新集合中操作 。 那么为什么这种操作就不会出现并发异常呢?
因为这种思想 , 可以理解为读写分离的思想 。 因为get还是使用原来list的get的方法 。 写的时候 , 在复制一份原来的 , 然后再复制出来的基础上进行修改的 。 那么怎么保证数据问题呢?我们从源码中可以看到使用到了ReentrantLock(关于锁相关的 。 凯哥(凯哥Java:kaigejava)将在后面详细的讲解的)锁来控制的 。
那么现在使用CopyOnWriteArrayList来模拟下文章开头签到例子 。
【Java@Java并发编程之支持并发的list集合你知道吗】司小司再签到的时候 , 先把签到表复制一份 , 然后再新的复制出来的签到表中进行签到 。 小明是原来签到表查看自己的信息的 。 这样就不会出现争强情况了 。