Hallo,
ich habe eine Klasse, die eine Art Singleton implementiert. "eine Art Singleton" heißt, dass zu einer Instanz nie eine gleichartige existieren darf. Die Gleichartigkeit wird an Hand des übergebenen Parameters festgemacht.
Hier mal ein Codeausschnitt:
Die Methode removeController(String) wird aufgerufen, um eine Instanz wieder freizugeben. Dieser Methode wird von der Instanz selbst aufgerufen. Meine Frage nun: Macht diese Form der Synchronisierung Sinn? Würde ein anderer Weg (per Semaphore oder was weiß ich) besser sein? Ein paar Vorschläge wären schön.
ich habe eine Klasse, die eine Art Singleton implementiert. "eine Art Singleton" heißt, dass zu einer Instanz nie eine gleichartige existieren darf. Die Gleichartigkeit wird an Hand des übergebenen Parameters festgemacht.
Hier mal ein Codeausschnitt:
Code:
public class TrainDialogController{
private static Map<String, TrainDialogController> instances= new Hashtable<String, TrainDialogController>();
public static synchronized TrainDialogController getInstance(String train){
TrainDialogController instance;
synchronized(instances){
instance= instances.get(train);
if (instance == null){
instance= new TrainDialogController(train);
instances.put(train, instance);
}
}
return instance;
}//getInstance(String) : TrainDialogController
private static synchronized void removeController(String train){
synchronized(instances){
instances.remove(train);
}
}//removeController(String)
}
Die Methode removeController(String) wird aufgerufen, um eine Instanz wieder freizugeben. Dieser Methode wird von der Instanz selbst aufgerufen. Meine Frage nun: Macht diese Form der Synchronisierung Sinn? Würde ein anderer Weg (per Semaphore oder was weiß ich) besser sein? Ein paar Vorschläge wären schön.