在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
红颜莎娜
相关分类