大家好,我有这个代码:
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; }
}
现在我认为这应该给出 120 的期望结果 - 但是结果似乎在 115 和 120 之间波动。如果我在Thread.sleep(1)
之后添加一个,b.start()
我总是得到 120 的期望结果。为什么会发生这种情况?
这真的让我很困惑,如果能得到任何帮助,我将不胜感激,谢谢