3

3 つの Java のインスタンスがあり、 1 つのスレッドのみを使用しLinkedBlockingQueueてそれらから読み取り (操作) を実行したいと考えています。take素朴なアプローチは、キューごとに 1 つのスレッドを持つことです。

selectJava でキューをブロックするための UNIX システム コールのようなものはありますか?

ありがとう。

4

1 に答える 1

2

これらの BlockingQueues は、実際には独自のスレッドによって処理されることを意図していました。

Booleans など、はるかに小さなアイテム用に 4 番目のキューを設定し、offer()その 4 番目のキューにブール値を挿入することで、他の 3 つのキューのそれぞれの呼び出しを挿入することを検討します。その後、スレッドは 4 番目のキューでスリープ状態になり、ウェイクアップするpeek()と、他の 3 つのキューで商品を取得する場所を見つけることができます。

非常に洗練されていない解決策だと思います。また、時々きれいに目覚めない競合状態が発生する可能性があると思います。しかし、それは基本的にうまくいくはずです。

于 2010-07-16T16:35:30.803 に答える