首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    CopyOnWriteArrayList源码学习

    之前我们学习过乐观锁,大概得意思就是说当多线程来操作一个数据的时候,如果是读线程的时候,就获取读锁,写锁是不能降级为读锁的,但是写锁可以降级为读锁,而读锁也就是一个标志,用来防止写线程对数据的修改最终导致的脏数据问题,这样就使得多线程情况下,读的性能得到了极大的提升 。因为只有在写操作的时候,才会发生线程阻塞。而copyOnWriteArrayList的思想理念则是,在多线程修改的时候list值得时候,将list先拷贝一份。然后我修改完毕之后,将原来的数据的地址指向这个拷贝的list地址。这是针对写操作的线程,当在写操作的同时又有大面积读取的线程的时候,恰巧就是你list拷贝到一半的时候。那怎么办?是走老的list吗,如果走了老的list,那么读线程之间获取的值肯定是不一样的。那么只能在写操作的时候进行加锁了。但是如果写锁释放之后,那么之前读了脏数据的线程又来修改list的值,那么又变成了脏数据。在目前的认知里,我还是觉得读锁很重重要啊。那么就让我们看看CopyOnWriteArrayList是如何做这一切的。

    03
    领券