¿Se puede reescribir la siguiente pieza de código sin usar Collections.synchronizedMap()
manteniendo la corrección en concurrencia?¿Existe el equivalente de java.util.concurrent para WeakHashMap?
Collections.synchronizedMap(new WeakHashMap<Class, Object>());
i.e. ¿hay algo de java.util.concurrent que se pueda usar en su lugar? Tenga en cuenta que la simple sustitución con
new ConcurrentHashMap<Class, Object>(new WeakHashMap<Class, Object>()));
, obviamente, no va a funcionar
El beneficio importante de las estructuras de datos altamente concurrentes tales como 'ConcurrentHashMap' es que puede (a través de una variedad de técnicas) permanecerá thread-safe bajo carga pesada sin (mucho) bloqueando Es importante darse cuenta de que si su clase no tiene mucha carga, su rendimiento con ConcurrentHashMap podría ser * peor * que con HashMap. Si se espera que su entorno esté libre de controversias, puede usar la sincronización externa y estará bien. – scottb