私は以下のコードを持っています:
public class Test1 {
private static long value = 0;
public static void main(String[] args) {
Thread1 k = new Thread1();
Thread1 t = new Thread1();
k.start();
t.start();
while (k.isAlive() & t.isAlive());
System.out.println(value);
}
public static void addOne() {
long temp = value;
temp = temp + 1;
value = temp;
}
}
class Thread1 extends Thread {
public void run() {
for (int i=0; i<100; i++)
Test1.addOne();
}
}
通常、実行すると 200 の出力が得られますが、100 や 151 のような出力が得られることはほとんどありません。これは何が原因でしょうか?