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

相关推荐
Source.Liu1 分钟前
【用Rust写CAD】前言
开发语言·rust
jzlhll1232 分钟前
kotlin android Handler removeCallbacks runnable不生效的一种可能
android·开发语言·kotlin
&岁月不待人&4 分钟前
Kotlin 协程使用及其详解
开发语言·kotlin
苏柘_level65 分钟前
【Kotlin】 基础语法笔记
开发语言·笔记·kotlin
hummhumm13 分钟前
Oracle 第20章:数据库调优
java·数据库·后端·python·mysql·oracle·database
WANT_如初22 分钟前
Nacos集群搭建
java·springcloud·nacos集群
大耳猫26 分钟前
Android Studio 多工程公用module引用
android·java·kotlin·android studio
2402_8575834933 分钟前
知识管理新维度:Spring Boot多分类系统
java·spring boot·后端
2401_8771587334 分钟前
什么是垃圾回收(Garbage Collection)?
java·开发语言·算法
A_cot34 分钟前
深入理解 MyBatis:从创建到使用与核心知识点
java·spring boot·sql·mysql·spring·maven·mybatis