Java Reference
In-Depth Information
Die nicht-deterministische 70 Ausgabe des Programms ist:
Thread 2 - call 1
ToolTipManager2 erzeugt.
ToolTipManager2::getInstance()
operation() aufgerufen.
Thread 3 - call 1
ToolTipManager2::getInstance()
operation() aufgerufen.
Thread 1 - call 1
ToolTipManager2::getInstance()
operation() aufgerufen.
Thread 2 - call 2
ToolTipManager2::getInstance()
operation() aufgerufen.
Thread 3 - call 2
ToolTipManager2::getInstance()
operation() aufgerufen.
Thread 1 - call 2
ToolTipManager2::getInstance()
operation() aufgerufen.
Thread 2 - call 3
ToolTipManager2::getInstance()
operation() aufgerufen.
Thread 3 - call 3
ToolTipManager2::getInstance()
operation() aufgerufen.
Thread 1 - call 3
ToolTipManager2::getInstance()
operation() aufgerufen.
Um beim ersten Beispiel Threadsicherheit zu gewährleisten, müsste die Methode
getInstance() mit synchronized gekennzeichnet werden. Dies wird im Folgen-
den gezeigt:
public synchronized static ToolTipManager getInstance()
{
if (instance == null)
{
instance = new ToolTipManager();
System.out.println ("Neues Singleton erzeugt");
}
return instance;
}
Die Kennzeichnung mit dem Schlüsselwort synchronized hat allerdings den Nach-
teil, dass die Aufrufe für getInstance() relativ langsam sind [shespj].
70 Nicht-deterministisch bedeutet, dass die Ausgabe bei einem erneuten Aufruf nicht zwangsläufig die
gleiche Ausgabe erzeugt, da mehrere Threads gleichzeitig ablaufen.
Search WWH ::




Custom Search