黑马程序员技术交流社区

标题: int类型加法运算,在内存中怎样运行的? [打印本页]

作者: vtming    时间: 2014-3-15 20:56
标题: int类型加法运算,在内存中怎样运行的?
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;
看截图最后一个结果:




作者: 小周务商    时间: 2014-3-16 11:14
这个是线程安全问题。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2