Pourquoi n'y a-t-il pas une TreeMap concurrente?
J'ai quelques question par rapport à l' java.util.concurrent
package:
- Pourquoi dans l'API java il y a le non-cumul TreeMap sur un côté et la concurrente de ConcurrentSkipListMap sur un autre?
- Pourquoi n'ont-ils pas l'appeler
ConcurrentTreeMap
? Est-il sûr de dire qu'unSkipListMap
comprend unTreeMap
?
Par exemple un non simultanées HashMap
a ses concurrentes homologue ConcurrentHashMap
. Pourquoi n'est-il pas le cas pour les TreeMap
?
source d'informationauteur Rollerball | 2013-07-15
Vous devez vous connecter pour publier un commentaire.
Je soupçonne que cela a été fait parce que faire un arbre de structure concurrente était trop difficile ou trop souffert de verrouillage des problèmes de performances. En termes de collections ordonnées, SkipLists sont très simples structures de données et d'offrir les mêmes performances et le comportement des arbres, de sorte que le
ConcurrentSkipListMap
(etSet
) aurait été plus facile de faire simultanées.En fait je suis plus déçu qu'il n'y a pas un non-simultanées SkipList de collecte de moi-même.
Pas. Il est sûr de dire qu'un SkipList donne des caractéristiques similaires en termes d'une collection ordonnée d'éléments qui donne
O(logN)
de performance pour la recherche, insertion, suppression, etc.. Au moins il donne une approximation probabiliste de cette performance.Voici un une bonne page sur skiplists. Ils sont très cool structures de données. Je peux seulement espérer que le sont enseignées dans moderne des données de programmation structures de classes.
La
TreeMap
classe est appelé ainsi parce qu'il est mis en œuvre à l'aide d'un un arbre de recherche équilibré. LeConcurrentSkipListMap
est appelé ainsi parce qu'il est mis en œuvre à l'aide d'un ignorer la liste. Pourquoi il n'y a pas de version simultanée deTreeMap
? Peut-être parce que c'est dur de faire un arbre de la structure qui s'adapte à des niveaux élevés de simultanéité; un concurrent à sauter de la liste est plus facile à mettre en œuvre correctement.