2011-01-18 11 views
30

this論文に記載されているようなリンクリストを使用したいと思います。 しかし、WebでJava実装が見つかりませんでした。Javaでロックフリーの同時リンクリスト

上記のリンクリストのJava実装が存在しない場合、私はjava.util.concurrent.ConcurrentLinkedQueue<E>を使用すると思います。これは良い選択ですか(リンクされたリストではありません)。

良い選択ではない場合、Javaで信頼できる並行(スレッドセーフ)待機リスト(ロックフリー)のリンクリスト実装を知っている人はいますか?

+0

doh target comment gone ...(それはLinkedBlockingDequeに関するものです) – bestsss

+0

さて、大きな問題は、あなたはどう思いますか?任意の図形またはフォームの並行リストが必要ですか?ほとんどのListメソッドは共有されている並行構造には意味がありません。なぜあなたはn番目の要素を得ますか?とにかくn番目の要素を取得することはどういう意味ですか?サイズのようなものは一時的なものであり、モニタリングとは別に価値がありません。あなたはこれをどのように使いたいかについてもう少し説明できますか? http://permalink.gmane.org/gmane.comp.java.jsr.166-concurrency/6321 –

+0

シングルトンの "物理"バッファを実装したいと思います。これはn個の "論理"バッファで使用され、各論理バッファは開始要素と終了要素によってのみ定義され、st私は自分のデータをメモリに冗長表示していません。 – ptikobj

答えて

40

ConcurrentLinkedQueueは、優れたロックフリーキューであり、同時の単一リンクリストが実行できるものを実行します。 小さな警告:pollまたはpeekを使用せず、iterator()(+ .remove())のみを使用するとメモリがリークします。

これは顕著なQueueです。

+6

JDK 7にはConcurrentLinkedDequeがあります –

+4

+1メモリリークを解消するための良いリファレンス –

+0

私はConcurrentLinkedDequeを望んでいます現在のjdk7プレビュー版ですか? – ptikobj

関連する問題