Making Unter:eine Klasse Thread-sichere
public class TestSeven extends Thread {
private static int x;
public synchronized void doThings() {
int current = x;
current++;
x = current;
}
public void run() {
doThings();
}
}
Welche Aussage ist wahr?
A. Kompilierung schlägt fehl.
B. Eine Ausnahme wird zur Laufzeit ausgelöst.
C. Das Synchronisieren der run() - Methode würde die Klasse threadsicher machen.
D. Die Daten in der Variablen "x" sind vor gleichzeitigen Zugriffsproblemen geschützt.
E. Das Deklarieren der doThings() - Methode als statisch würde die Klasse threadsicher machen.
F. Das Wrappen der Anweisungen in doThings() in einem synchronisierten Block (new Object()) {} würde die Klasse threadsicher machen.
ist es nicht genug, doThings() als synchronisiert zu markieren, um diese Klasse Thread-sicher zu machen? Ich sehe, dass die richtige Antwort D ist, aber die Modellantwort dieser Frage ist E, aber ich verstehe nicht warum?
D ist nicht korrekt. – Keppil
E ist korrekt, weil es nicht heißt "entferne das synchronisierte Schlüsselwort". Unnötig knifflige Phrasierung, aber genau das bekommen Sie bei diesen Prüfungen. – Thilo
D ist korrekt, da es bei der gegebenen Klasse keine andere Möglichkeit gibt, den Wert von x zu ändern. Wenn das Hinzufügen einer anderen Methode erlaubt ist, würde ich sagen, dass auch die Lösung E nicht korrekt ist. –