Hallo Leute,
kann mir einer der werten Jave-Versteher .-) erklären, weshalb folgender Code nicht synchronisiert?
Hier soll durch 2 Threads die Variable x durch die Schleife auf den Wert 4.000 gezählt werden.
Die Werte sind allerdings bei jedem Durchgang immer noch unterschiedlich trotz Synchronisation.

kann mir einer der werten Jave-Versteher .-) erklären, weshalb folgender Code nicht synchronisiert?
Hier soll durch 2 Threads die Variable x durch die Schleife auf den Wert 4.000 gezählt werden.
Die Werte sind allerdings bei jedem Durchgang immer noch unterschiedlich trotz Synchronisation.
Java:
public class SynchedThreads2 implements Runnable {
static Object lock= new Object();
int x;
@Override
public void run() {
int i;
for (i=0; i<2000; i++) {
synchronized(lock) {
x++;
}
}
System.out.println(Thread.currentThread().getName()
+ " has finished after " + i + " loops");
}
public static void main(String[] args) {
CreazyThreads2 c = new CreazyThreads2();
new Thread(c).start();
new Thread(c).start();
try {
Thread.sleep(500);
}catch (InterruptedException e) {
e.printStackTrace();
}
synchronized(lock) {
System.out.println("x is: " +c.x);
}
}
}