2013-03-17 4 views
6

Javaで同期化されたQueueクラスがありますか? Vector(同期している)とArrayList(これはありません)のようなものを探していますが、Listインターフェイスを実装する代わりに、Queueを実装しています。Javaに同期キューがありますか?

同期化されていないキューをラップして同期させる方法はありません。

+0

ConcurrentLinkedDeque – delicateLatticeworkFever

+0

あなたが拡張したクラスのドキュメントに目を通す場合https://docs.oracle.com/javase/7/docs/api/java/util/AbstractQueue.htmlおそらくあなたが探しているものを見つけるでしょう。また、https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html http://stackoverflow.com/questions/2695426/are-linkedblockingqueues-insert-and-remove-メソッドスレッドセーフ – rogerdpack

+0

これは非常に有効な質問のようです。キューはこの点で他のJavaコレクションとは異なるようです。私はそれが再開されることを要求するつもりで、少し質問を明確にするために編集しました。 – rghome

答えて

7

ArrayBlockingQueueと別のBlockingQueueの実装を参照してください。ドキュメントから

さらにキューが要素を取り出すときに非空になった、要素の格納時にキュー内で利用可能になるスペースを待つのを待つ操作をサポートしていますキュー。

+0

これは要求されたものではないブロッキングキューです。 – rghome

+0

@rghome私はOPがスレッドセーフな実装を見つけることを望んでいたと信じています。この場合、私の答えは正しいです。 – bsiamionau

+1

私はブロック動作を心配していました。リーダライタがブロックする場合、これは標準の非ブロッキング・キューとは非常に異なる動作です。しかし、APIを読んで、私はこれはオプションだと思うし、あなたも非ブロックを読み書きすることができます。だからあなたは正しい。 – rghome