Pregunta

Me di cuenta de que Netty tiene algunos interno Concurrente HashMap utilidades.Me pregunto por qué Netty no utilizar el ConcurrentHashMap que se construye en el Java Core.Es el Netty aplicación mejor de alguna manera, o tiene alguna funcionalidad?Estoy trabajando en un proyecto que necesita de un Concurrente HashMap y me estoy debatiendo si debo utilizar el netty aplicación, pero no puedo ver ninguna diferencia en el código fuente.

¿Fue útil?

Solución

ConcurrentHashMap no existía hasta JSR-166, que fue lanzado en Java 5 como el java.util.concurrent paquete.

Netty no incluye el suyo ConcurrentHashMap Debido a que es superior, de hecho, ciertamente es solo una copia de JSR -166, es para que puedan funcionar con Java 1.4.

Para sus propios proyectos, debe usar java.util.concurrent.ConcurrentHashMap Si puede depender de Java 5. Y si no puede, entonces debe incluirlo en su producto (y cambiar el nombre del paquete para que no entre en conflicto con los proyectos incluidos en el tiempo de ejecución de Java 5). En cualquier momento. Puede que Doug Lea o Brian Goetz escriban su código seguro para usted, probablemente debería hacerlo.

Otros consejos

Netty del ConcurrentHashMap es en realidad buggy;no es seguro para subprocesos.

He encontrado últimamente.Usted puede demostrar que con una simple prueba.

Hemos tenido:thread1 bucles sobre el mapa.los valores de().(flujo).ordenada().findFirst() thread2 concurrenly poner/quitar del mapa.

Por el diseño de cualquier forma de iteración no debe necesariamente reflejar el mapa, pero nunca debe fallar con ArrayIndexOutOfBoundsException en algunos profundo y oscuro de código, a menos que el netty versión corrupta de los datos del mapa, mientras que el jdk flujos de cosas confía en él.

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