Hallo,
in der letzten Klausur war folgende Aufgabe zu Threads dran:
"Programmieren Sie eine Klasse mit dem Namen Counter, die sich als Thread starten lässt. Wird ein solcher Thread gestartet, gibt er in der Command-Line die Zahlen von 1 bis 500.000 aus. Wenn mehrere Threads dieser Klasse gleichzeitig laufen, darf keine Zahl mehrfach ausgegeben werden. Es darf aber auch keine Zahl ausgelassen werden. Sichern Sie diese Eigenschaft in Ihrem Quellcode ab. Bemerkung: Sie müssen die Threads nicht starten."
Die Lösung war folgende:
Wieso ist denn hier sichergestellt, dass keine Zahl ausgelassen bzw. doppelt vorkommen kann?
Danke
in der letzten Klausur war folgende Aufgabe zu Threads dran:
"Programmieren Sie eine Klasse mit dem Namen Counter, die sich als Thread starten lässt. Wird ein solcher Thread gestartet, gibt er in der Command-Line die Zahlen von 1 bis 500.000 aus. Wenn mehrere Threads dieser Klasse gleichzeitig laufen, darf keine Zahl mehrfach ausgegeben werden. Es darf aber auch keine Zahl ausgelassen werden. Sichern Sie diese Eigenschaft in Ihrem Quellcode ab. Bemerkung: Sie müssen die Threads nicht starten."
Die Lösung war folgende:
Java:
public class Counter extends Thread {
private static final int MAX = 500000;
private static int currentCount = 0;
@Override
public void run() {
while ( incrementIfValid() );
}
private synchronized boolean incrementIfValid() {
if ( currentCount < MAX ) {
System.out.println(++currentCount);
return true;
}
return false;
}
}
Wieso ist denn hier sichergestellt, dass keine Zahl ausgelassen bzw. doppelt vorkommen kann?
Danke
Zuletzt bearbeitet von einem Moderator: