chenzhichao
2015-08-03 16:30
采纳率: 50%
浏览 4.1k
已采纳

java多线程操作同一个变量的问题,难道是多核cpu所致?

大家请看代码和输出结果,我百思不得其解,为什么 amount只加了一次,开始我以为是static所致,就算去掉也还是有几率出现这样的结果,难道是多核cpu真的把两个线程同时执行了?图片说明

package study;

public class MyRunnable implements Runnable {

    public static int  amount=0;
    @Override
    public void run() {
        // TODO 自动生成的方法存根
        amount++;
        String s=Thread.currentThread().getName();
        System.out.println(s+"  "+amount);
    }
}
package study;

public class MyFirstThread {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
         MyRunnable r1=new MyRunnable();
     Thread AThread=new Thread(r1);
     Thread BThread=new Thread(r1);
     AThread.start();
     BThread.start();

  for(;;)
  {
      if((!AThread.isAlive())&&(!BThread.isAlive()))
      {
        System.out.println("amount ="+r1.amount); 
        break;
      }
  }

    }
}

6条回答 默认 最新

相关推荐 更多相似问题