Gebäude Ich habe eine @ApplicationScoped
Bohne für alle Benutzer, die die IDS-> Namen & vice versa in Trove
& java.util
Karten speichert.Thready Sicherheit von Karten verwendet privat Innenanwendung scoped bean & nur für Zwecke bereit, nachdem sie einmal
Ich baue die Karten nur einmal bei der Konstruktion von Bean oder (im Falle einer manuellen Aktualisierung durch den Website-Administrator).
Innerhalb der Bean-Methoden verwende ich nur die get()
mit den Karten, also nicht die Karte zu ändern. Wird dies threadsicher sein, da es nur für fertige Zwecke verwendet wird? Ich teile die Karten nicht mit anderen Beans außerhalb von &, ohne die Karten zu ändern (Hinzufügen/Entfernen von Einträgen), jederzeit in meinem Code.
Ist es in diesem Fall auch notwendig, die Felder endgültig zu machen?
Code Bean wie folgt:
@ApplicationScoped
@ManagedBean(name="directory", eager=true)
public class directory {
private static TIntObjectHashMap<String> idsToNamesMap;
private static TreeMap<String, Integer> namesToIdsMap;
@PostConstruct
public void buildDirectory(){
// building directory here ....
}
public String getName(int topicId){
return idsToNamesMap.get(topicId);
}
public List<Entry<String, Integer>> searchTopicsByName(String query){
return new ArrayList(namesToIdsMap.subMap(query, true, query+"z", true).entrySet());
}
}
Ja, Da Sie nicht die Werte modifizieren in die Karten, wird es dir gut gehen. –
Wenn er den Inhalt der Karten nicht ändert, sollten die Karten leer und ziemlich nutzlos sein. Sicherlich bevölkert er die Karten. Und wenn er es ist, muss er die Sichtbarkeit des Gedächtnisses berücksichtigen. Nur weil etwas in einem Konstruktor ausgeführt wird, heißt das nicht, dass es nicht als Schreibzugriff auf die Sammlung gilt.Ich sage nicht, dass es ein Problem gibt, nur darauf hinweisend, dass es nicht so einfach ist wie "später im Hauptprogramm ändere ich sie nie!" Der Anfang des Programms zählt auch. –
ja auf jeden Fall bin ich bevölkern die Karten aber ich glaube, es ist nur ein einzelner Thread, der gerade einmal so tun, wenn die Bohne gebaut wird (da 'buildDirectory' mit Anmerkungen versehen ist' @ PostConstruct') –