多线程操作导致LinkedList报NoSuchElementException

今天查看log日志突然发现有个异常如下:

java.util.NoSuchElementException: null

at java.util.LinkedList.removeFirst

看了下我的代码

java 复制代码
LinkedList<String> orderIdList = new LinkedList<>();
if(!orderIdList.contains(id)){
            if(orderIdList.size()>100)orderIdList.removeFirst();
			orderIdList.add());
			firstFalg=1;
		}

突然想到LinkedList是线程不安全的,看了下removeFirst 得底层代码

java 复制代码
  public E removeFirst() {
        final Node<E> f = first;
        if (f == null)
            throw new NoSuchElementException();
        return unlinkFirst(f);
    }

如果多线程访问,LinkedList内部结构被修改,则可能会抛出NoSuchElementException异常。

所以修改成

java 复制代码
LinkedList<String> orderIdList = new LinkedList<>();
if(!orderIdList.contains(id)){
            if(orderIdList.size()>100)orderIdList.remove(0);
			orderIdList.add());
			firstFalg=1;
		}

问题解决。

资料查询:多线程操作导致list报NoSuchElementException_-CSDN问答

相关推荐
摇滚侠2 分钟前
Spring Boot 3零基础教程,WEB 开发 内容协商机制 笔记34
java·spring boot·笔记·缓存
一勺菠萝丶3 分钟前
在 macOS 上用 Docker 为 Java 后端 & 常见开发需求搭建完整服务(详尽教程)
java·macos·docker
顾漂亮9 分钟前
JVM底层攻坚
java·jvm·spring
编程岁月10 分钟前
java面试-0215-HashMap有序吗?Comparable和Comparator区别?集合如何排序?
java·数据结构·面试
木井巳19 分钟前
[Java数据结构与算法]详解排序算法
java·数据结构·算法·排序算法
没有bug.的程序员2 小时前
分布式架构未来趋势:从云原生到智能边缘的演进之路
java·分布式·微服务·云原生·架构·分布式系统
毕业设计制作和分享4 小时前
springboot150基于springboot的贸易行业crm系统
java·vue.js·spring boot·后端·毕业设计·mybatis
小梁努力敲代码9 小时前
java数据结构--List的介绍
java·开发语言·数据结构
摸鱼的老谭9 小时前
构建Agent该选Python还是Java ?
java·python·agent
lang201509289 小时前
Spring Boot 官方文档精解:构建与依赖管理
java·spring boot·后端