重複の可能性:
静的クラスに対する Java スレッドの影響
次のコードを検討してください。
static class ThreadTest extends Thread {
int x;
int[] y;
public ThreadTest(int x, int[] y) {
this.x = x;
this.y = y;
}
@Override
public void run() {
while (x< 10) {
++x;
System.out.print("0");
}
while (y[0] < 10) {
++y[0];
System.out.print('1');
}
}
}
public static void main(String args[]) {
int x = 0;
int[] y = new int[1];
y[0] = 0;
Thread A = new ThreadTest(x, y);
Thread B = new ThreadTest(x, y);
B.start();
A.start();
}
明らかに競合状態があります。印刷される 1 の最大数と最小数を評価するにはどうすればよいですか? 1 の印刷数が変化する原因は何ですか?