在下面的代碼中,在線程運行increment方法後,它將值2輸出到控制檯。不應該將值設爲1,因爲方法用1遞增?爲什麼下面的代碼增加2而不是1?(Java新手)
class TestSync implements Runnable {
private int balance;
public void run() {
for(int i = 0; i < 50; i++){
increment();
System.out.println(Thread.currentThread().getName() + " balance after increment is " +balance);
}
}
private synchronized void increment() {
int i = balance;
balance = i + 1;
// System.out.println(balance);
}
}
公共類TestSyncTest {
public static void main(String[] args) {
TestSync job = new TestSync();
Thread a = new Thread(job);
Thread b = new Thread(job);
a.setName("Thread A");
b.setName("Thread B");
a.start();
b.start();
}
}
如果兩個線程遞增值之前,任何人獲得打印出的價值是什麼? – tkausl
嘗試評論現有的'System.out.println'並取消註釋,現在你已經註釋掉了。 –
你能檢查我的答案嗎? – KeLiuyue