performance, synchronized og HashMap
Hi,jeg har en Map instance:
Map map<String,Object> = new HashMap<String,Object>();
Nu er der flere threads som samtidig har access til denne map.
Alle threads har mulighed for at adde, remove eller gette informationer til denne thread.
MEN:
hvis en thread tilføjer en KEY, så er koden sådan, at ingen andre thead vil tilføje den samme KEY:
public void addValue(Object value) {
String key = sequence.getNewKey();
map.put(key, value);
}
en thread som tilføjer en key er den eneste thread som kan fjerne denne key.
ALLE threads har mulighed for at læse ALLE keys.
// thread 123:
String v = map.get("1");
// thread 124:
String v = map.get("1");
Kan jeg lade være med at bruge synchronized?
Eller kan det ske, at hvis to threads samtidig tilføjer to forskellige keys, at java Map interna ikke kan handle det rigtigt og
kun en key bliver tilføjet.
Mit spørgsmål er? kan det ske, at der kommer problemer, hvis jeg IKKE bruger synchronized, men garanterer, at flere forskellige threads aldrig vil komme til at tilføje eller fjerne den samme key, men alle threads har read-access til alle keys.
med venlig hilsen
kernelx
