[解決済み] ConcurrentSkipListSetはどのような場合に有効ですか?
質問
Java 6 APIでこのデータ構造を見たばかりですが、いつ役に立つリソースになるのか興味があります。私はscjpの試験勉強をしていますが、Kathy Sierraの本では取り上げられておらず、模擬試験の問題でも言及されています。
解き方は?
コンカレントスキップリストセット と コンカレントスキップリストマップ は、複数のスレッドからアクセスされるソートされたコンテナが必要な場合に便利です。 これらは本質的に、並行処理コードのための TreeMap と TreeSet に相当します。
JDK 6 の実装は
高性能な動的ロックフリーハッシュテーブルとリストベースセット
を使って、スキップリストに対する多くの操作をアトミックに実装できることを示した、IBM の Maged Michael 氏によるものです。
コンペア&スワップ(CAS)
という演算があります。 これらの操作はロックフリーなので
synchronized
(ほとんどの操作で) これらのクラスを使用する場合。
現在 赤黒い木 ベースの並列 Map/Set 実装を Java で実現しました。 少し文献に目を通したところ カップル 論文 は、同時実行RBツリーがスキップリストより優れていることを示しましたが、これらのテストの多くは トランザクションメモリ これは、今のところ主要なアーキテクチャでハードウェア的にサポートされていません。
JDKがスキップリストを採用したのは、その実装がよく知られていたことと、ロックフリーを実現するのが簡単で移植性が高い(CASを使用する)ためだと推測しています。 もし、明確にしたい人がいれば、ぜひ教えてください。 私は興味があります。
関連
-
[解決済み】エラー:配列または java.lang.Iterable のインスタンスに対してのみ反復処理を行うことができます。
-
[解決済み】エラー「No enclosing instance of type Foo is accessible」の原因と修正方法について教えてください。
-
[解決済み】Android Studioでタスク :app:compileDebugJavaWithJavac の実行に失敗しました。
-
[解決済み】Javaで無限大を実装する方法とは?
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] コレクションを反復処理し、ループ内でオブジェクトを削除する際に ConcurrentModificationException を回避する。
-
[解決済み] ThreadLocal変数はいつ、どのように使用すればよいですか?
-
[解決済み] volatileキーワードは何に役立つのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー「No enclosing instance of type Foo is accessible」の原因と修正方法について教えてください。
-
[解決済み】ResultSetの例外 - 結果セットの開始前
-
[解決済み】 java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver [重複]。
-
[解決済み】「error: '.class' expected」の意味と修正方法について
-
[解決済み】Javaの部分文字列:「文字列のインデックスが範囲外」。
-
[解決済み】Javaを使用するSelenium - ドライバの実行ファイルのパスは、webdriver.gecko.driverシステムプロパティで設定する必要があります。
-
[解決済み】破損したjarファイル
-
[解決済み】Eclipseで「JUnitテストが見つかりませんでした。
-
[解決済み] java.sql.SQLException を取得しました。ResultSet が終了した後の操作は許可されません。
-
[解決済み】Java: GZIPInputStreamの作成に失敗しました。GZIP形式ではありません