L
Lorus
Gast
Hallo Zusammen,
anscheint habe ich die ganze Sache noch nicht so recht verstanden.
Ich möchte 3 Threads erstellen, die eine gemeinsame Zählvariable besitzen, die synchronisiert werden soll.
Eine Ausgabe soll dann also ca. so aussehen:
Folgenden Code habe ich mir dazu nun gebastelt:
Erhalte allerdings ca. folgende Ausgabe:
Wieso zählt da nun jeder Thread für sich selbst? der Counter sollte doch eigentlich synchronisiert sein :-/
Für einen Denkanstoß wäre ich sehr dankbar
Grüße,
Lorus
anscheint habe ich die ganze Sache noch nicht so recht verstanden.
Ich möchte 3 Threads erstellen, die eine gemeinsame Zählvariable besitzen, die synchronisiert werden soll.
Eine Ausgabe soll dann also ca. so aussehen:
Thread 1: 1
Thread 3: 2
Thread 1: 3
Thread 2: 4
Thread 3: 5
Thread 2: 6
Thread 1: 7
Thread 3: 8
Thread 2: 9
Thread 3: 10
Folgenden Code habe ich mir dazu nun gebastelt:
Code:
class Counter {
int Counter=0;
public synchronized int getCounterValue() {
return Counter;
}
public synchronized void incrementCounter() {
Counter++;
}
}
class TextThread extends Thread {
String text;
public TextThread(String text) {
this.text = text;
}
public void run() {
Counter count = new Counter();
while(count.getCounterValue() < 10) {
count.incrementCounter();
try {
sleep((int)(Math.random()*1000));
}
catch(InterruptedException e) {
}
System.out.println(text + ": " + count.getCounterValue());
}
}
}
class TextThreadDemo {
public static void main(String args[]) {
TextThread t1, t2, t3;
t1= new TextThread("Thread 1");
t2 = new TextThread("Thread 2");
t3 = new TextThread("Thread 3");
t1.start();
t2.start();
t3.start();
}
}
Erhalte allerdings ca. folgende Ausgabe:
Thread 1: 1
Thread 3: 1
Thread 2: 1
Thread 1: 2
Thread 1: 3
Thread 3: 2
Thread 2: 2
Thread 1: 4
Thread 3: 3
Thread 1: 5
Thread 3: 4
Thread 2: 3
Thread 1: 6
Thread 1: 7
Thread 2: 4
Thread 3: 5
Thread 2: 5
Thread 1: 8
Thread 2: 6
Thread 3: 6
Thread 3: 7
Thread 1: 9
Thread 2: 7
Thread 3: 8
Thread 1: 10
Thread 3: 9
Thread 3: 10
Thread 2: 8
Thread 2: 9
Thread 2: 10
Wieso zählt da nun jeder Thread für sich selbst? der Counter sollte doch eigentlich synchronisiert sein :-/
Für einen Denkanstoß wäre ich sehr dankbar
Grüße,
Lorus