Tenemos un servidor Scala que está obteniendo un árbol de nodos usando Buffers de Protocolo sobre un socket y necesitamos adjuntar datos adicionales a cada nodo.Guava MapMaker(). WeakKeys(). MakeMap() vs WeakHashMap
En un contexto de subproceso único y cuando tanto el árbol de nodos como los datos asociados tendrán sus fuertes referencias eliminadas al mismo tiempo (debido a salir del alcance), ¿hay alguna razón para usar MapMaker de Google Guava con weakKeys () sobre el uso de WeakHashMap? Parece que con MapMaker, uno paga por el acceso sincronizado, que no es necesario en este caso.
Como comentario adicional, sería útil que MapMaker permitiera el acceso a las configuraciones de equivalencia para poder elegir la igualdad de referencia pero sin importar las referencias débiles o débiles.
Gracias Laurence, escaneé rápidamente el Javadoc y asumí que se implementaría usando == y identityHashCode, pero leer más de cerca coincide con su descripción. –
Además, todavía se puede usar java.util.HashMap y escribir una ReferenceEquivalence personalizada que contenga una T única y use == y identityHashCode? –
Podrías, pero necesitarás algo para purgar las llaves muertas del 'HashMap'. Por otro lado, no he verificado esto mirando el código, pero me pregunto si la eliminación de claves/valores muertos es parte de la razón por la que 'MapMaker' usa' ConcurrentMap'. –