Servlets und Synchronisation (tja, schon wieder)
Markus Möller
- java
Hallo zusammen!
Irgendwie bin ich mir in Sachen Synchronisation bei Servlets immer noch nicht ganz sicher. Deshalb noch einmal eine Frage.
Man beachte den unten stehenden Beispiel-Code!
In der doPost-Methode wird eine Instanz von MitarbeiterListe erzeugt, die beim Aufruf von getStrings() zwei Sachen macht:
Nun ist es so, dass die Firma bei verschiedenen (u.U. gleichzeitigen) Aufrufen verschieden ist, so dass auch in Mitarbeiterliste der hash verschieden gefüllt ist.
Jetzt glaube ich mich zu erinnern, dass das keine Probleme machen dürfe, weil erstens dieser Hashtable nicht static ist und zweitens die Variablen, die in der doPost-Methode instanziert werden auch nicht von mehreren Threads geteilt werden, somit also quasi impliziet synchronized sind.
Ist das richtig, oder muss ich hier noch wild synchronisieren.
Tja, sorry dass ich schon wieder danach frage, aber ich blick leider noch nicht ganz durch und möchte auf Nummer sicher gehen.
Auf jeden Fall Danke im Voraus!
Im Servlet:
---------------
doPost {
Firma firma = bekommeIchIrgendWoherUndIstImmerVerschieden();
MitarbeiterListe liste = new MitarbeiterListe();
String[] mitrabeiternamen = liste.getStrings(firma);
// blabla, viel Code
int index = liste.getIndexOf("Müller");
}
---------------
In MitarbeiterListe:
---------------
public class MitarbeiterListe {
private Hashtable mFindIndexByName;
public String[] getStrings(Firma firma) {
Mirabeiter[] mitarbeiter = mitarebeiterInFirma(firma);
String[] result = new String[mitarbeiter.length];
for (int i=0; i<mitarbeiter.lenght; i++) {
result[i] = mitarbeiter[i].getName();
mFindIndexByName(mitarbeiter[i].getName(), i)
}
return result;
}
public int getIndexOf(String name) {
return (int)mFindIndexByName(name);
}
}
---------------