区别:fail-safe允许在遍历的过程中对容器中的数据进行修改,而fail-fast则不允许。
fail-fast:直接在容器上进行遍历,在遍历过程中,一旦发现容器中的数据被修改了,会立刻抛出ConcurrentModificationException异常导致遍历失败。常见的的使用fail-fast方式遍历的容器有HashMap和ArrayList等。
fail-safe:这种遍历基于容器的一个克隆。因此,对容器内容的修改不影响遍历。常见的的使用fail-safe方式遍历的容器有ConcerrentHashMap和CopyOnWriteArrayList等。