• LinkedList(3):并发异常


    1 LinkedList并发异常

    1. package com.example.demo;
    2. import java.util.Iterator;
    3. import java.util.LinkedList;
    4. public class TestLinkedList {
    5. public static void main(String[] args) {
    6. LinkedList linkedList = new LinkedList(); //双向链表
    7. linkedList.add(11);
    8. linkedList.add(22);
    9. linkedList.add(33);
    10. //nextIndex : 0 next 第一号节点元素
    11. //lastReturned 记录返回值的对象
    12. // private int expectedModCount = modCount; 将记录链表长度发生变化次数的记录值赋值给 期望值 -> 程序在初始化的时候,那么他们一定是相等的
    13. Iterator iterator = linkedList.iterator();
    14. while (iterator.hasNext()){
    15. linkedList.add(10);
    16. System.out.println(iterator.next());
    17. }
    18. System.out.println(linkedList);
    19. }
    20. }

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

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

     
    

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

    2 测试并发修改异常

    1. package com.example.demo;
    2. import java.util.LinkedList;
    3. import java.util.ListIterator;
    4. public class TestLinkedList {
    5. public static void main(String[] args) {
    6. LinkedList linkedList = new LinkedList(); //双向链表
    7. linkedList.add(11);
    8. linkedList.add(22);
    9. linkedList.add(33);
    10. //nextIndex : 0 next 第一号节点元素
    11. //lastReturned 记录返回值的对象
    12. // private int expectedModCount = modCount; 将记录链表长度发生变化次数的记录值赋值给 期望值 -> 程序在初始化的时候,那么他们一定是相等的
    13. ListIterator iterator = linkedList.listIterator();
    14. while (iterator.hasNext()){
    15. //hashNext 遍历链表长度的次数
    16. iterator.add(10);
    17. System.out.println(iterator.next());
    18. }
    19. System.out.println(linkedList);
    20. }
    21. }

    结果如下:

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

  • 相关阅读:
    Sora - 探索AI视频模型的无限可能
    java.sql.Date、java.sql.Time 和 java.sql.Timestamp
    【蓝桥杯省赛真题37】Scratch三国演义字数统计 少儿编程scratch编程蓝桥杯省赛真题讲解
    微信小程序完整项目实战(前端+后端)
    arm-linux gdb远程调试
    ProCAST 2016 warning-8 = invalid inconsistent license key
    Android Studio Gradle提高工作效率小技巧
    使用 Next.js 连接 mysql 数据库
    自动化机械臂喷涂生产线方案五
    一、C#入门
  • 原文地址:https://blog.csdn.net/u013938578/article/details/132672101