`

为什么某些集合如Vector要failfast

阅读更多

从设计上考虑,如果允许集合在Iterator被创建之后,集合结构上的非Iterator机制内的改动,
Iterator是对其做应变好还是不 应变好?

应变的话,Iterator与集合之间须是实时联动,可能通过观察者模式的机制,(可能代价较高),能否让迭代顺利进行,这一点 我相信能做到,因为其支持Iterator本身的add remove操作

不应变的话,就会挑战一致性,这个更严重,因此宁愿设定迭代时 外界不可更改,这个虽然加少了一定适应性,但是换来的是性能和更高的操作稳定性(只提供Iterator本身的结构修改)

分享到:
评论

相关推荐

    Java集合面试问题

    - **Fail-safe**:某些集合如`ConcurrentHashMap`和`CopyOnWriteArrayList`提供了一种线程安全的遍历机制,即使遍历过程中集合被修改也不会抛出异常。 - 实现机制:通过创建集合的副本进行遍历,这样就不会受到集合...

    02-Java集合容器面试题(2020最新版)-重点.pdf

    - **线程安全**:某些集合类如`Vector`、`Hashtable`等内部采用了同步机制来保证线程安全。 - **非线程安全**:`ArrayList`、`LinkedList`等不是线程安全的,但在多线程环境中可通过外部同步机制来保证线程安全。 #...

    Java集合框架.pdf

    fail-fast机制是一种错误检测机制,如果在迭代过程中进行了集合的结构性修改(增删操作),迭代器将抛出RuntimeException,如ConcurrentModificationException,从而及时发现错误。 从给定的内容来看,文件“Java...

    Java 多线程与并发(14-26)-JUC集合- CopyOnWriteArrayList详解.pdf

    - **Fail-fast机制**:在非并发集合如`ArrayList`中,当多个线程共享集合时,如果一个线程修改了集合的状态(例如添加或删除元素),而此时其他线程正在遍历这个集合,那么后者可能会遇到不一致的数据结构,甚至抛出...

    Java集合容器面试题(2022最新版)-重点.docx

    - 快速失败机制(`fail-fast`):当一个集合正在被迭代时,如果有其他线程修改了集合,则抛出`ConcurrentModificationException`异常。 - 实现原理:通过迭代器的`modCount`变量跟踪集合的变化次数,每次调用`next()`...

    对参数 对象的理解方法

    - **安全失败(Fail-safe)**:某些集合类(如`CopyOnWriteArrayList`)允许在遍历过程中修改集合,不会抛出`ConcurrentModificationException`异常,这种机制称为安全失败。 综上所述,参数与对象的概念贯穿整个...

Global site tag (gtag.js) - Google Analytics