thread concurrent clase java concurrency treemap

java - clase - ¿Por qué no hay un TreeMap concurrente?



java fixed thread pool (2)

Tengo algunas preguntas relacionadas con el paquete java.util.concurrent :

  1. ¿Por qué en la API de java hay TreeMap no concurrente en un lado y ConcurrentSkipListMap concurrente en otro?

  2. ¿Por qué no lo llamaron ConcurrentTreeMap ? ¿Es seguro decir que un SkipListMap incluye un TreeMap ?

Por ejemplo, un HashMap no concurrente tiene su contraparte concurrente, ConcurrentHashMap . ¿Por qué no sucede para el TreeMap ?


¿Por qué hay un TreeMap no concurrente en un lado y el ConcurrentSkipListMap en otro lado?

Sospecho que esto se hizo porque hacer que una estructura de árbol fuera concurrente era demasiado difícil o tenía problemas de bloqueo de rendimiento. En términos de colecciones ordenadas, las SkipLists son estructuras de datos muy simples y proporcionan un comportamiento y rendimiento similares a los árboles, por lo que el ConcurrentSkipListMap (y Set ) podría haber sido más fácil de hacer concurrente.

De hecho, estoy más decepcionado de que no haya una colección SkipList no concurrente.

¿Es seguro decir que un SkipListMap incluyó un TreeMap?

No. Es seguro decir que un SkipList ofrece características similares en términos de una colección ordenada de elementos que proporciona un rendimiento O(logN) para búsqueda, inserción, eliminación, etc. Al menos, proporciona una aproximación probabilística de ese rendimiento.

Aquí hay una buena página sobre skiplists . Son estructuras de datos extremadamente interesantes. Solo puedo esperar que sean enseñados en clases de estructuras de datos de programación moderna.


La clase TreeMap se llama así porque se implementa utilizando un árbol de búsqueda equilibrado . El ConcurrentSkipListMap se llama así porque se implementa utilizando una lista de omisión . ¿Por qué no hay una versión concurrente de TreeMap ? Posiblemente porque es difícil hacer una estructura de árbol que alcance niveles altos de concurrencia; una lista de omisión simultánea es más fácil de implementar correctamente.