CopyOnWrite 策略

CopyOnWrite 是用于解决并发读写的一种策略,在Write的时候对共享变量进行Copy,在副本上进行更新,再把更新好的副本原子性地替换原来的共享变量。并发

实现:spa

  • 读操做Read不涉及对共享变量的更改,所以不须要同步。线程

  • 若是有多个线程同时申请Write,在各自拷贝的副本上进行修改,而后更新回共享变量,就会致使某些线程的修改被其余线程覆盖。所以Write必须在同步的状况下进行。orm

优缺点:内存

  • 因为修改是在副本上进行,因此修改的同时容许其余线程进行读。同步

  • 因为须要进行拷贝,固然会存在内存占用的问题。it

  • 因为在进行写的过程当中仍然容许读,因此数据不是实时一致的,只有在写完成后才一致,也就是最终一致。若是须要实时的一致性,建议使用读写锁。变量

CopyOnWrite 策略适用于那些读远多于写、且对实时性要求不高的操做,优点在读不须要同步。List

更多了解可参考 JUC 里 CopyOnWriteArrayList 的实现。数据

相关文章
相关标签/搜索