Hi, also ich habe noch nicht ganz verstanden was ganz genau synchronized macht. Also klar ist, dass eine synchronized Methode nur ein Thread ausführen kann , andere Threads müssen warten bis die Methode freigegeben wird. Jedoch versteh ich z.B in diesem Beispiel wenn man erreichen will, dass nur die Ausgabe -9 möglich ist , dass man dann die Methoden synchronized deklariert. Würde es nicht auch einfach reichen die beiden Threads mit join dem main thread vorzuziehen?
Java:
public class IntValue {
public int value = 0;
public void inc() {
value += 1;
}
public void dec() {
value -= 10;
}
public void print() {
System.out.print(value);
}
}
public class Thread1 extends Thread {
private IntValue iv;
public Thread1(IntValue iv) {
this.iv = iv;
}
public void run() {
iv.inc();
}
}
public class Thread2 extends Thread {
private IntValue iv;
public Thread2(IntValue iv) {
this.iv = iv;
}
public void run() {
iv.dec();
}
}
public static void main(String[] args) {
IntValue v = new IntValue();
Thread1 t1 = new Thread1(v);
Thread2 t2 = new Thread2(v); t1.start();
t2.start();
v.print();
}