Z tego co zrozumiałem, to stosując synchronizacje w poniższym kodzie powinienem otrzymać:
10101010101...
a otrzymuję:
1232323232323210
Czyli wychodzi na to że wątek wtrąca się w połowie synchronizowanej metody innego wątka, a nie powinien.
Chyba, że coś źle napisałem
public class Test extends Thread {
static int i=0;
Test(){
start();
}
synchronized void dodajOdejmij(){
for(int j=0;j<3;j++){
i++;
System.out.print(i);
try {
sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
i--;
System.out.print(i);
}
}
public void run(){
dodajOdejmij();
}
public static void main(String args[]) {
new Test();
new Test();
new Test();
}
}
Celem jest otrzymanie kodu 01010101... za pomocą synchronized