Im folgenden Code, nachdem ein Thread die increment-Methode ausführt, gibt er den Wert 2 an die Konsole aus.Wenn der Wert nicht 1 sein sollte erhöht es um 1?Warum erhöht der folgende Code den Wert mit 2 anstelle von 1? (Neu in 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);
}
}
public class 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();
}
}
Was passiert, wenn beide Threads den Wert erhöhen, bevor einer von ihnen wird aus dem Wert drucken? – tkausl
Versuchen Sie, das vorhandene 'System.out.println' zu kommentieren und das Kommentarzeichen zu entfernen, das Sie jetzt auskommentiert haben. –
Können Sie meine Antwort bitte überprüfen? – KeLiuyue