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

相关推荐
学渣676561 分钟前
什么时候使用Python 虚拟环境(venv)而不用conda
开发语言·python·conda
joke_xiaoli2 分钟前
tomcat Server 连接服务器 进展
java·服务器·tomcat
想睡hhh12 分钟前
c++STL——stack、queue、priority_queue的模拟实现
开发语言·c++·stl
陶然同学13 分钟前
RabbitMQ全栈实践手册:从零搭建消息中间件到SpringAMQP高阶玩法
java·分布式·学习·rabbitmq·mq
shanzhizi15 分钟前
springboot入门-controller层
java·spring boot·后端
小鹿鹿啊21 分钟前
C语言编程--14.电话号码的字母组合
c语言·开发语言·算法
Sunlight_77723 分钟前
第六章 QT基础:6、QT的Qt 时钟编程
开发语言·qt·命令模式
cloues break.23 分钟前
C++初阶----模板初阶
java·开发语言·c++
陌殇殇40 分钟前
Java使用IText7动态生成带审批文本框的PDF文档
java·pdf
wwww.wwww44 分钟前
Qt软件开发-摄像头检测使用软件V1.1
开发语言·c++·qt