Java.util.concurrent
パッケージに関していくつか質問があります。
Java APIで、片側に非並行 TreeMap があり、もう一方に並行 ConcurrentSkipListMap があるのはなぜですか?
なぜそれをConcurrentTreeMap
と呼ばなかったのですか? SkipListMap
にTreeMap
が含まれていると言っても安全ですか?
たとえば、非並行HashMap
は、並行する対応物ConcurrentHashMap
を持っています。なぜTreeMap
が発生しないのですか?
なぜ片側に非並行TreeMapがあり、もう一方にConcurrentSkipListMapがあるのですか?
これは、ツリー構造を並行して作成することが非常に困難であるか、ロックのパフォーマンスの問題に悩まされていたためだと思います。順序付けられたコレクションの観点から、SkipListsは非常に単純なデータ構造であり、ツリーと同様の動作とパフォーマンスを提供するため、 ConcurrentSkipListMap
(およびSet
)の方が簡単な場合があります同時。
自分で非同時のSkipListコレクションがないことに、私は実際にもっとがっかりしています。
SkipListMapにTreeMapが含まれていると言っても安全ですか?
いいえ。SkipListは、O(logN)
のパフォーマンスを提供する項目の順序付けられたコレクションに関して同様の機能を提供すると言っても安全ですisルックアップ、挿入、削除など。少なくとも、そのパフォーマンスの確率的近似を提供します。
これが スキップリストについての良いページ です。それらは非常にクールなデータ構造です。私はそれらが現代のプログラミングデータ構造クラスで教えられることを望みます。