我正在從Java Jpoint會議觀看視頻.
我對以下來自Alexey Shipilev報告的幻燈片有疑問:
打擾一下,請不要打擾我.實際上,作者說不可能將變量集設置為
r1 = 1 (Y)
r2 = 0 (x)
r3 = 1 (x)
r4 = 0 (Y)
根據視頻,他暗示很明顯.
有人可以澄清為什么JMM無法設置此值嗎?
附言
如果我理解正確的Alexey表示法,則表示遵循以下代碼:
public class SequentialConsistency {
static volatile int x;
static volatile int y;
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
x = 1;
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
y = 1;
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("r1=" + x + ", r2=" + y);
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("r3=" + x + ", r4=" + y);
}
}).start();
}
}