JSR(Java内存模型)常见问题解答
来源:互联网
假设这段代码同时被两个线程执行,看到y的值为2。由于对y的赋值是在对x的赋值后面,所以程序员就会认为x的值一定是1. (个人备注:按顺序执行,先赋值x在赋值y)。然而赋值的顺序可能被重排了。如果发生重排,则可能是先赋值y=2,然后在读取两个变量的值(备注:即r1和r2),接着在对x赋值。最后的结果就是r1的值是2,而r2的值是0,(备注:因为读取r2的时候,对x尚未赋值,其值仍为0) 假设这段代码同时被两个线程执行,看到y的值为2。由于对y的赋值是在对x的赋值后面,所以程序员就会认