新参者:) 2023-06-28 17:35 采纳率: 75%
浏览 27

一个关于Java多线程的问题

请问为什么会出现这样的执行结果?两个线程同时执行,同时拿到了count = 8我能理解,但如果两个线程都执行了count++,为什么结果不是10?难道是 count = count + 1,两者都拿到了 8,+1之后两者又都更新为9,这整个执行过程中有什么细节吗?这个静态变量在多线程中有什么说法?


public class Test02 implements Runnable {
    private static int count;

    public Test02() {
        count = 0;
    }

    public void run() {
        synchronized (this) {
            for (int i = 0; i < 5; i++) {
                try {
                    System.out.println(Thread.currentThread().getName() + ":" + (count++));
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
    public int getCount() {
        return count;
    }

    public static void main(String[] args) {
        Thread thread1 = new Thread(new Test02(), "SyncThread1");
        Thread thread2 = new Thread(new Test02(), "SyncThread2");
        thread1.start();
        thread2.start();
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(test02.getCount());
    }
}

img

  • 写回答

3条回答 默认 最新

  • 瞬间的未来式 2023-06-28 17:56
    关注

    用互斥锁

    img

    评论

报告相同问题?

问题事件

  • 请采纳用户回复 6月29日
  • 修改了问题 6月28日
  • 修改了问题 6月28日
  • 创建了问题 6月28日

悬赏问题

  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型