idea 同步代码块在debug模式下失效

案例:线程安全的集合

package test;

import java.util.ArrayList;
import java.util.List;

//线程安全的集合
public class UnsafeList {

    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        for (int i = 0; i < 5000; i++) {
            new Thread(() -> {
                synchronized (list) {
                    list.add(Thread.currentThread().getName());
                }
            }).start();
        }

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println(list.size());

    }
}

不知道同步代码块为什么失效?造成原因:debug模式启动

debug:1715

在这里插入图片描述
run: 5000

在这里插入图片描述

debug模式和run模式运行结果不同

如果代码不做干预,多线程的执行结果是不稳定的。
debug模式因为idea会不断的抓取内存快照,会在一定程度上影响线程的调度,从而导致结果和普通模式有较明显的区别。

posted @   我有满天星辰  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示