在Java中,为什么b == (b = a)这段代码在多线程环境不总是返回true?a可以被多个线程修改。b初始化为b = a在打印b == (b = a)时,结果却不一定为true。可是,操作符的优先级不是先b = a再b == b吗?代码如下:public class Demo implements Runnable{ public static double a = 0; @Override
public void run() {
a = Math.random()*100; double b = a;
System.out.println(b == (b = a));
} public static void main(String args[]) { for(int i=0;i<10;i++) { new Thread(new Demo()).start();
}
}
}打印结果:falsetruetruetruefalsetruefalsetruetruetrue
添加回答
举报
0/150
提交
取消