Java Gurús,ConcurrentHashMap vs ReentrantReadWriteLock Mapa de encargo de acuerdo para la recarga de
Actualmente tenemos un HashMap<String,SomeApplicationObject>
que está siendo leer con frecuencia y modificar de vez en cuando y estamos teniendo problemas que durante la modificación/recarga, Leer rendimientos de operación null
que no es aceptable.
Para solucionar este tengo siguientes opciones:
A. Use ConcurrentHashMap
que se parece a la primera opción, pero la operación que estamos hablando es reload()
- significa clear()
seguido de replaceAll()
. Por lo tanto, si Map
se lee post clear()
y pre replaceAll()
devuelve nulo, lo que no es deseable. Incluso si yo synchronize
esto no resuelve el problema.
B. Crear otra aplicación basada en ReentrantReadWriteLock
Dónde me gustaría crear adquirir Write Lock
antes reload()
operación. Esto parece más apropiado, pero creo que debe haber algo disponible para esto y no necesito reinventar la rueda.
¿Cuál es la mejor manera de salir?
EDIT ¿Alguna colección ya está disponible con esta característica?
Sus mapas son efectivamente inmutables, lo que los convierte en un objetivo perfecto para su publicación a través de 'volátil'. –
** Efectivamente inmutable ** lo siento, no entiendo 'inmutable' tan bien ... ¿Podría dar algunas pistas? – SiB