Java Gurus,ConcurrentHashMap vs ReentrantReadWriteLock basierten Custom Map für Nachladen
Zur Zeit haben wir eine HashMap<String,SomeApplicationObject>
die häufig und gelegentlich modifiziert gelesen wird und wir Probleme haben, dass während der Änderung/Nachladen, lesen Betrieb zurückkehrt null
was nicht akzeptabel ist.
Um dies zu beheben Ich habe folgende Möglichkeiten:
A. Verwendung ConcurrentHashMap
, die wie die erste Wahl aussieht, aber die Operation, die wir im Begriff ist, reload()
sprechen sind - bedeutet clear()
von replaceAll()
gefolgt. Also, wenn die Map
gelesen wird nach clear()
und vor replaceAll()
gibt es Null, was nicht wünschenswert ist. Auch wenn ich synchronize
dies behebt das Problem nicht.
B. eine weitere Implementierung erstellen, basierend auf ReentrantReadWriteLock
Wo ich acquire Write Lock
vor reload()
Betrieb schaffen würde. Dies scheint passender zu sein, aber ich denke, da muss schon etwas vorhanden sein und ich muss das Rad nicht neu erfinden.
Was ist der beste Ausweg?
BEARBEITEN Ist eine Sammlung bereits mit einer solchen Funktion verfügbar?
Ihre Karten sind praktisch unveränderbar, was sie zu einem perfekten Ziel für Veröffentlichungen über 'volatile' macht. –
** Effektiv unveränderlich ** Entschuldigung, ich verstehe nicht unveränderlich so gut ... Könnten Sie bitte einige Hinweise geben ??? – SiB