getInstance()

travel

New member
5 November 2007
1
0
Hallo, ich bin heute einen Quellcode durchgegangen und bin auf folgende Methode gestoßen:


public Highscore getInstanceHighscore()
{
if (highscore==null)
{
highscore= new Highscore();
}
return highscore;
}

/**
* Diese Methode ermöglicht, dass das Fenster nur einmal geöffnet werden
* kann.Solange das jeweilige Objekt der Klasse Highscore auf kein Objekt
* verweist ist highscore==null.
*/
Diese Dokumentation stand dabei.
Ich verstehe jetzt nicht, warum das Fenster nur einmal geöffnet werden darf. Kann mir jemand sagen, wo dieser Befehl geschrieben ist?
und wieso wird erst eine neue Highscore zurück gegeben, wenn highscore == null?
Das hatte mich ein wenig gewundert...
Kann mir da vielleicht jemand helfen?
Danke schon einmal im voraus!!!
MfG

travel
 
Der Code funktioniert übrigens in Multithreaded Umgebungen nur fast immer:

Nimm an, der erste Thread hat gerade
if (highscore==null)
ausgeführt, für den Vergleich "true" ermittelt und wird dann unterbrochen. Dann kann ein anderer Thread eventuell über die gleiche Abfrage laufen und ein Objekt erzeugen. Wenn der erste Thread dann wieder aufwacht, und ein Objekt erzeugt, geht das zuvor erzeugte Objekt flöten.

Es muß mit Mutexen oder binären Semaphoren gearbeitet werden.