A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package com.test1;
public classDthread {
   public static int a=0;
   
   public static void main(String[] args) {
      // TODO Auto-generated method stub
      Test1t1 = newTest1();
      new Thread(t1).start();
      new Thread(t1).start();
   }
}
class Test1 implements Runnable{
   @Override
   public void run() {
      // TODO Auto-generated method stub
      Dthread.a = Dthread.a + 1;
      System.out.println(Thread.currentThread().getName()+ "A="+ Dthread.a);
   }
}
此程序10到100次会产生一个意外结果结果:
Thread-1A=1
Thread-0A=1
我无法理解这个结果怎样产生的。
有没有人能解释下面这个加法在内存是怎么运行的??
Dthread.a = Dthread.a + 1;
看截图最后一个结果:



评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

1 个回复

倒序浏览
这个是线程安全问题。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马