誰かが私の下でプログラムが終了している理由を理解できますか? 1つのスレッドが別のスレッドが私を読んでいると私は1もプログラムが終了してはならない実際の下に2 でもない価値場合は終了します1と2 で交互に私を更新しているが、それは印刷のいずれか1または2同時読み込みと書き込みの問題
static volatile int i = 1;
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
i = (i == 1 ? 2 : 1);
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
if (i != 1 && i != 2) {
System.out.println("i=" + i);
System.exit(0);
}
}
}
}).start();
}
出ます
これはJavaで新しい人にとっては良い質問かもしれません:) – CsBalazsHungary