fail-fast机制和happen-before机制

发布时间 2023-04-03 15:23:50作者: HHHuskie

什么是fail-fast(快速失败)?

fail-fast 机制是Java集合(Collection)中的一种错误机制。 在迭代器遍历一个集合对象时,如果遍历过程中使用集合的方法对集合对象的结构进行了修改(增加、删除),则会抛出Concurrent Modification Exception(并发修改异常)。

在迭代器遍历集合过程中,不可以使用集合的方法来增删元素,如果使用的list.remove(),也就是集合的方法,会破坏迭代器的结构从而抛出ConcurrentModificationException异常,应该使用迭代器的remove()方法来删除next()获取的元素,即iterator.remove()。

什么是happens-before机制?

happens-before 指的是 Java 内存模型中两项操作的顺序关系。例如说操作 A 先于操作 B,也就是说操作 A 发生在操作 B 之前,操作 A 产生的影响能够被操作 B 观察到。这里的「影响」包括:内存中共享变量的值、发送了消息、调用了方法等。

如果操作 X happens-before 操作 Y,而操作 Y happens-before 操作 Z,那么操作 X happens-before 操作 Z。