Estoy tratando de crear un LinkedHashMap concurrente para una arquitectura multiproceso.Implementando un LinkedHashMap concurrente
Si uso Collections#synchronizedMap()
, tendría que usar bloques sincronizados para la iteración. Esta implementación llevaría a la adición secuencial de elementos.
Si uso ConcurrentSkipListMap
hay alguna manera de implementar un Comparator
para almacenar secuencialmente, como se almacena en la Lista enlazada o en la cola.
Me gustaría utilizar los paquetes integrados de Java en lugar de los de terceros.
EDIT:
En este concurrente LinkedHashMap
, si las claves son el nombre, deseo dejar las llaves en la secuencia de su llegada. es decir, se agregará un nuevo valor al inicio o al final, pero de forma secuencial.
Al iterar, el LinkedHashMap
podría agregarse con nuevas entradas o eliminarse. pero la iteración debería ser la secuencia en la que se agregaron las entradas.
Entiendo que al usar Collections#synchronizedMap()
, debería implementarse un bloque sincronizado para la iteración, pero el mapa podría ser modificable (las entradas podrían agregarse/eliminarse) mientras se está iterando.
¿De qué getter/setter estás hablando? ¿Qué estás tratando de "almacenar secuencialmente"? Proporcione más detalles: es difícil entender lo que realmente está tratando de hacer en este momento. –
¿Qué intenta almacenar de forma secuencial? Si sus llaves tienen un orden definible, entonces usted debería poder escribir un Comparador. Tal vez debería proporcionar más información sobre las claves en su mapa y cómo le gustaría que se ordenaran. –