fail-safe 和 fail-fast,是多线程并发操作集合时的一种失败处理机制。
fail-fast (快速失败)
“Fail-fast”(故障快速)是指系统在发生故障或异常情况时,立即停止运行或中断操作,并迅速通知相关方。
fail-fast (快速失败)机制是Java集合(Collection)中的一种错误机制。 在遍历集合元素时,如果遍历过程中对集合元素进行了修改(增加、删除),则会抛出Concurrent Modification Exception(并发修改异常)。
解决方式:
-
迭代器遍历:需要使用迭代器自己的删除元素的方法
remove
操作解决 -
普通for循环:1. 倒序遍历并删除某元素 2. 正序删除某元素后需
index--
,防止漏删
fail-safe(安全失败)
“Fail-safe”(故障安全)是指系统在发生故障或异常情况时,能够保持安全运行或进入安全状态。
fail-safe(安全失败)机制是Java集合(Collection)中的一种机制
使用并发集合类,CopyOnWriteArrayList
或ConcurrentHashMap
可以解决并发修改异常。在遍历集合时,可以正常在遍历过程中,进行删除、增加元素,也就是不会发生并发修改异常
具有"fail-safe"特性的集合类包括,CopyOnWriteArrayList
或ConcurrentHashMap
,也就是可以解决并发修改异常