0

http://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/BlockingQueue.html#putの「典型的な生産者と消費者のシナリオに基づく使用例」を見ていました。 (エ)

例は正しいですか?

put および take 操作では、キューの変更に進む前に何らかのリソースをロックする必要があると思いますが、ここではそれが行われていません。

また、これが並行キューの種類であった場合、並行キューでのアトミック操作はロックを必要としないため、ロックの欠如は理解できたでしょう。

4

2 に答える 2

3

APIに書かれていることに追加するものはないと思います:

要素を取得するときにキューが空でなくなるのを待機し、要素を格納するときにキューでスペースが使用可能になるのを待機する操作を追加でサポートする Queue 。

BlockingQueue の実装はスレッドセーフです。すべてのキューイング メソッドは、内部ロックまたはその他の形式の同時実行制御を使用して、アトミックに効果を達成します。

于 2011-06-30T14:06:45.883 に答える
1

BlockingQueue は単なるインターフェースです。この実装では、同期ブロック、ロックを使用するか、ロックフリーにすることができます。私の知る限り、ほとんどのメソッドは実装で Lock を使用します。

于 2011-06-30T14:07:05.207 に答える