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方法会对期望值和真实值同时进行修改,所以无异常。

相关推荐
曹牧10 分钟前
Java:强类型转换
开发语言·python
wuguan_13 分钟前
C#之线程
开发语言·c#
LXS_35716 分钟前
STL - 函数对象
开发语言·c++·算法
木千21 分钟前
Qt5.15.2安装MSVC2019编译器
开发语言·qt
仟濹24 分钟前
【Java加强】1 异常 | 打卡day1
java·开发语言·python
去往火星28 分钟前
Qt6 CMake 中引入 Qt Linguist 翻译功能
开发语言·qt
阿猿收手吧!31 分钟前
【C++】atmoic原子操作与并发安全全解析
开发语言·c++·安全
AllData公司负责人36 分钟前
【亲测好用】实时开发平台能力演示
java·c语言·数据库
pcm12356736 分钟前
设计C/S架构的IM通信软件(3)
java·c语言·架构
zz345729811337 分钟前
C语言基础概念7
c语言·开发语言