1つのプロデューサースレッドと複数のコンシューマースレッドを持つマルチスレッドアプリケーションがあります。データは共有スレッドセーフコレクションに保存され、バッファに十分なデータがある場合はデータベースにフラッシュされます。
javadocsから-
BlockingQueue<E>
要素を取得するときにキューが空でなくなるのを待ち、要素を格納するときにキューでスペースが使用可能になるのを待つ操作を追加でサポートするキュー。
take()
このキューの先頭を取得して削除し、必要に応じて要素が使用可能になるまで待機します。
私の質問-
- E [] take(int n)メソッドを持つ別のコレクションはありますか?つまり、ブロッキングキューは、要素が使用可能になるまで待機します。私が欲しいのは、100個または200個の要素が使用可能になるまで待機する必要があるということです。
- または、ポーリングせずに問題に対処するために使用できる別の方法はありますか?