Pregunta

Tenemos un servidor Scala que está obteniendo un árbol de nodos utilizando búferes de protocolo sobre un socket y necesitamos adjuntar datos adicionales a cada nodo.

En un solo contexto roscado y cuando tanto el árbol de nodo como los datos asociados tendrán sus fuertes referencias eliminadas al mismo tiempo (debido a que no sale de alcance), ¿hay alguna razón para usar el fabricante de mapas de Google Guava con Keaveskeys () sobre el uso de Weakhashmap ? Parece que con MapMaker, uno paga el acceso sincronizado, lo que no es necesario en este caso.

Por otro lado, sería útil si MapMaker diera acceso a la configuración de equivalencia para que uno pudiera elegir la igualdad de referencia pero no les importaría las referencias débiles o suaves.

¿Fue útil?

Solución

Un inconveniente significativo para WeakHashMap es que no es un "mapa de identidad". Es decir, usa equals() y hashCode (más bien que == y identityHashCode) en las teclas, lo que realmente no tiene sentido para las teclas débiles. Puede trabajar con este error asegurándose de que sus claves usen la igualdad de identidad en su equals método.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top