Mam pewien problem, w wątku pierwszym uruchomiana jest metoda inkrementuj() i zmienna i powinna mieć wartość 0, a zmienna stanKonta powinna mieć wartość 1, a u mnie maszyna wirtualna pokazuje komunikat "Wykonuje to Wątek 1 Stan konta wynosi: 2 a i wynosi 0". Nie rozumiem skąd zmienna stanKonta ma wartość 2 a zmienna i wartość 0. Proszę o pomoc.
Tutaj przedstawiam kod:
class TestSynchro implements Runnable{
private int stanKonta;
public void run(){
for (int i=0;i<50;i++){
inkrementuj();
System.out.println("Wykonuje to " + Thread.currentThread().getName() + " Stan konta wynosi: " + stanKonta + " a i wynosi " + i);
}
}
public synchronized void inkrementuj(){
int i = stanKonta;
stanKonta = i + 1;
}
}
public class TestSynchronizacji {
public static void main(String[] args){
TestSynchro zadanie = new TestSynchro();
Thread watek1 = new Thread(zadanie);
Thread watek2 = new Thread(zadanie);
watek1.setName("Wątek 1");
watek2.setName("Wątek 2");
watek1.start();
watek2.start();
}
}