LinkedList(3):并发异常

1 LinkedList并发异常

复制代码
package com.example.demo;


import java.util.Iterator;
import java.util.LinkedList;

public class TestLinkedList {
    public static void main(String[] args) {
        LinkedList linkedList = new LinkedList(); //双向链表
        linkedList.add(11);
        linkedList.add(22);
        linkedList.add(33);

        //nextIndex : 0     next  第一号节点元素
        //lastReturned 记录返回值的对象
        // private int expectedModCount = modCount; 将记录链表长度发生变化次数的记录值赋值给 期望值 ->  程序在初始化的时候,那么他们一定是相等的
        Iterator iterator = linkedList.iterator();
        while (iterator.hasNext()){
            linkedList.add(10);
            System.out.println(iterator.next());
        }

        System.out.println(linkedList);
    }
}

在查询的时候进行插入,报错如下:

因为在linklist初始化的时候,期望值expectedModCount和真实值modCount是一样的,而进行add()方法以后就不一样了。

复制代码

如下图,只改变了modCount的值。

2 测试并发修改异常

复制代码
package com.example.demo;

import java.util.LinkedList;
import java.util.ListIterator;

public class TestLinkedList {
    public static void main(String[] args) {
        LinkedList linkedList = new LinkedList(); //双向链表
        linkedList.add(11);
        linkedList.add(22);
        linkedList.add(33);

        //nextIndex : 0     next  第一号节点元素
        //lastReturned 记录返回值的对象
        // private int expectedModCount = modCount; 将记录链表长度发生变化次数的记录值赋值给 期望值 ->  程序在初始化的时候,那么他们一定是相等的
        ListIterator iterator = linkedList.listIterator();
        while (iterator.hasNext()){
            //hashNext  遍历链表长度的次数
            iterator.add(10);
            System.out.println(iterator.next());
        }


        System.out.println(linkedList);
    }
}

结果如下:

这个add方法会对期望值和真实值同时进行修改,所以无异常。

相关推荐
摇滚侠1 小时前
Spring Boot 3零基础教程,创建第一个 Spring Boot 3 应用,Spring Boot 3 外部配置,笔记03
java·spring boot·笔记
superxxd2 小时前
跨平台音频IO处理库libsoundio实践
开发语言·qt·音视频
没有bug.的程序员3 小时前
服务网格 Service Mesh:微服务通信的终极进化
java·分布式·微服务·云原生·service_mesh
_OP_CHEN3 小时前
C++基础:(十二)list类的基础使用
开发语言·数据结构·c++·stl·list类·list核心接口·list底层原理
南尘NCA86666 小时前
企业微信防封防投诉拦截系统:从痛点解决到技术实现
java·网络·企业微信
ONE_PUNCH_Ge6 小时前
Go 语言变量
开发语言
幼稚园的山代王6 小时前
go语言了解
开发语言·后端·golang
晚风残6 小时前
【C++ Primer】第六章:函数
开发语言·c++·算法·c++ primer
满天星83035777 小时前
【C++】AVL树的模拟实现
开发语言·c++·算法·stl