多线程操作导致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问答

相关推荐
twj_one2 小时前
Arthas使用
java
lizz312 小时前
C++模板编程:从入门到精通
java·开发语言·c++
shoubepatien3 小时前
JAVA -- 05
java·开发语言
寰天柚子3 小时前
Java并发编程中的线程安全问题与解决方案全解析
java·开发语言·python
memgLIFE3 小时前
Springboot 分层结构
java·spring boot·spring
shoubepatien3 小时前
JAVA -- 08
java·后端·intellij-idea
kong79069283 小时前
Java新特性-(二)Java基础语法
java·新特性·java 基础语法
yangminlei3 小时前
springboot pom.xml配置文件详细解析
java·spring boot·后端
黄俊懿3 小时前
【深入理解SpringCloud微服务】Seata(AT模式)源码解析——全局事务的提交
java·后端·spring·spring cloud·微服务·架构·架构师
JAVA+C语言3 小时前
String Constant Pool
java·开发语言