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