スレッドがインクリメント方法を実行した後のコードでは、値2をコンソールに出力します。 1でインクリメントしますか?以下のコードは、1ではなく2でインクリメントするのはなぜですか?(New to 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