17

複数のスレッドがヒットするキューを実装したいと思います。

これは、スタックがシングルトンクラスにあることです。

さて、簡単な解決策はこれを同期することですか?これが標準で必要になると思いますか?ただし、書き込みを優先したいと思います。

したがって、書き込みは優先度が高く、読み取りは優先度が低くなります。

これは可能ですか?
可能であれば、同期せずに複数のスレッドで書き込むのが理想的です。

4

1 に答える 1

26

なぜ同期を避けたいのですか?「ロックのない」構造を書くことは可能ですが、非常にトリッキーで間違いやすいです。

私があなたなら、ArrayBlockingQueueor ConcurrentLinkedQueue(または の他の構造の 1 つjava.util.concurrent) を使用して、あなたの生活を楽にするでしょう!

ああ、書き込みよりも読み取りを優先することについて少し見逃していました。クラスでそれを行うことができますReentrantReadWriteLock。次に、スレッドセーフなキューは必要ありません。読み取りか書き込みかに応じて、読み取り/書き込みロックを使用して外部的にロックするだけです。

于 2013-01-11T14:20:32.183 に答える