多读少写的场景应该使用哪个并发容器,为什么使用它?

509 阅读1分钟

分析&回答

并发容器选择

  • CopyOnWriteArrayList是免锁容器。
  • CopyOnWriteArrayList这个容器适用于多读少写。
  • CopyOnWriteArrayList当多个迭代器同时遍历和修改这个列表时,不会抛出ConcurrentModificationException。
  • 在CopyOnWriteArrayList中,写入将导致创建整个底层数组的副本,而源数组将保留在原地,使得复制的数组在被修改时,读取操作可以安全地执行。
  • 读写并不是在同一个对象上。在写时会大面积复制数组,所以写的性能差,在写完成后将读的引用改为执行写的对象

使用场景

比如你做了一个搜索引擎,搜索引擎每次搜索前需要判断搜索关键词是否在黑名单里,黑名单每天更新一次。


喵呜面试助手: 一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!