こんにちは、私はこのコードを持っています:
public class ThreadTester {
public static void main(String args[]) {
Counter c = new Counter();
for (int i = 0; i < 10; i++) {
MyThread a = new MyThread(c);
MyThread b = new MyThread(c);
a.start();
b.start();
}
System.out.println("The value of the balance is " + c.getVal());
}
}
class MyThread extends Thread {
private Counter c;
public MyThread(Counter c){ this.c = c; }
public void run(){ s.increment(); }
}
class Counter {
private int i = 100;
public synchronized void increment(){ i++; }
public synchronized int getVal(){ return i; }
}
Thread.sleep(1)
これで 120 という望ましい結果が得られるはずだと思いましたが、結果は 115 と 120 の間で変動b.start()
しているようです。
それは本当に私を混乱させてきました.私が得られる助けに感謝します, ありがとう