java集合中的fail-fast与fail-safe两种模式

         java中的集合有线程安全的j.u.c包下的集合与java.util下面的线程不安全的集合。针对这两种集合有fail-fast与fail-safe两种模式。

        fail-fast表示快速失败,失败即立即返回失败。

        fail-safe表示安全跳过,不会抛异常中断。

        线程不安全的集合在获取迭代器迭代的时候,如果集合中的元素发生了变化,例如新增或者删除,由于线程不安全,迭代器在next时会直接抛出concurrentModificationException,通过内部的一个modCount判断是否等于expectedModCount来进行比较。从而马上就抛异常退出。而线程安全的集合在迭代时首先会复制一份集合中的内容,然后迭代的过程中由于都是通过副本来迭代的,所以对迭代没有影响,但是数据可能并不会立马反映在迭代过程中。

         1.fail-fast案例

           

public class TestFailFast {

    public static void main(String[] args) {

        List<Integer> list = new ArrayList<>();

        list.add(1);
        list.add(2);
        list.add(3);

        Iterator<Integer> iterator = list.iterator();

        while (iterator.hasNext()){
            System.out.println(iterator.next());
            list.add(4);
        }

    }
}

结果


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值