zoukankan      html  css  js  c++  java
  • 集合类(二)

    关于迭代器(Iterator)的两种迭代机制:fail-fast 和 fail-safe

    fail-fast 机制:遍历集合时,当集合结构被修改,会抛出Concurrent Modification Exception

    触发条件:单线程在遍历过程修改,remove()不会触发;多线程中一个线程遍历时另一个线程在进行修改

    实现方法:在迭代器内部标记了一个mode,集合进行修改时,mode会发生改变,在迭代过程中,每次next(),hashNext()都会去检查这个标记是否发生变化

    fail-safe机制:对集合结构的修改会在一个clone的集合中修改,不会抛出该错误

    问题:复制集合产生大量无效对象,系统开销大;无法保证当前读取数据是最新的数据

    fail-fast和 fail-safe对比

    Throw ConcurrentModification Exception Yes No
    Clone object No Yes
    Memory Overhead No Yes
    Examples HashMap,Vector,ArrayList,HashSet CopyOnWriteArrayList,ConcurrentHashMap
  • 相关阅读:
    设计模式(二)
    关于ICO
    js的中关于类的应用
    接口的实现顺序学习笔记[2]
    接口的继承学习笔记[1]
    设计模式(一)
    四种领域模型
    路径问题!!
    异步调用模式学习记录
    转:四人帮设计模式
  • 原文地址:https://www.cnblogs.com/jhin-wxy/p/10594619.html
Copyright © 2011-2022 走看看