この投稿によると、Java でロックフリー キューの実装を拡張しようとしています。
私の実装では、アトミック変数/参照のみを使用することに制限されています。さらに、キューには最大サイズが必要です。したがって、キューがいっぱいの場合は putObject() をブロックし、キューが空の場合は getObject() をブロックする必要があります。
現時点では、ロックを使用せずにこれを解決する方法がわかりません。
たとえば、AtomicInteger を使用する場合、変更操作はアトミックになります。しかし、まだ putObject() と getObject() でチェックと変更の状況を処理しなければならないという問題がありますよね? そのため、現在のキュー サイズを確認した後、エンキュー スレッドが中断されるという状況が依然として存在します。
現時点での私の質問は、この問題が私の現在の制限で解決できるかどうかです。
あいさつ