缘由

最近在看《Redis 设计与实现》,看到Redis的执行bgsave生成dump.rdb是根据CopyOnWrite
之前也不是很懂为啥要有CopyOnWrite这个东西
翻看文章搞明白了

如果有多个调用者(callers)同时请求相同资源(如内存或磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者试图修改资源的内容时,系统才会真正复制一份专用副本(private copy)给该调用者,而其他调用者所见到的最初的资源仍然保持不变。优点是如果调用者没有修改该资源,就不会有副本(private copy)被建立,因此多个调用者只是读取操作时可以共享同一份资源

之前一直觉得CopyOnWrite很鸡肋.


现在解释一下:
CopyOnWrite就是不同的线程操作不同的资源,最后再整合,因此是线程安全的,但不能保证强一致性

比如我现在数据 1234 我要插入5

那么原来的线程看到的数据是 1234 我新开的线程看到的数据是 12345
并且CopyOnWriteList中的setadd 方法都是加锁了的,所以至多有一份拷贝。当这份拷贝资源执行完后,才会释放锁,进行下次的setadd方法

参考博客

CopyOnWriteArrayList

最新文章

  1. Spring Security控制权限
  2. mysql 简单优化方法
  3. Vue.js – 基于 MVVM 实现交互式的 Web 界面
  4. HTML布局与框架
  5. iOS开发-UITextView根据内容自适应高度
  6. 添加Java文档注释
  7. linux常用命令的英文单词缩写
  8. Hdu 5289-Assignment 贪心,ST表
  9. pycharm console 控制台乱码的解决
  10. HashMap工作原理
  11. android:强大的图片下载和缓存库Picasso
  12. C# 笔试题,看你会几道题
  13. PyTorch教程之Autograd
  14. java调用kettle的job和transfer工具类
  15. Ajax+Struts2实现验证码验证功能
  16. Hadoop高可用集群
  17. DataTable 快速导入数据库——百万条数据只需几秒
  18. java计算时间差, 日期差小结
  19. Java 迭代器 工具类
  20. Redis.conf配置文件内容详解

热门文章

  1. android app开发中的常用组件
  2. [19/09/08-星期日] Python的几个概念和语法
  3. HashMap底层为什么一定用数组
  4. centos7 安装redis 出现cc: command not found错误解决
  5. 最大连续和 Easy
  6. PY个康托展开
  7. shopnc如何配置微信支付和支付宝支付
  8. Paper Reading_Database
  9. 剑指offer-动态规划-贪心算法--剪绳子-python
  10. order by关键字优化