私は3種類のスレッドを持っています。メインスレッド、ワーカー、クライアント。 私はまた、2つのキュー、要求と応答キューを持っています。JAVA - 並行性 - マルチプロデューサ/マルチコンシューマの要求と応答キュー
メインスレッドは多くのクライアントを生成します。各クライアントは何かを要求し、それはメインのリクエストキューに追加する必要があります。メインは適切なワーカーを生成し、ワーカーはその要求を処理します。終了すると、[result、calling thread#]が応答キューに追加されます。各クライアントは、応答のために要求の後に待機します。これについてどうすればいいですか?
私はキューのためのconcurentリンクされたキューを使うべきだと思っています。これは大丈夫ですか? スレッドIDとポーリングが見つかるまで、クライアントはピックアップする必要がありますか?頭がピークとポーリングの間で変化するのはhypotehtically可能ですか?私は競合や遅延の多くがあるので、ロックを追加したくない。
これはスレッドセーフであり、同時であり、デッドロックや飢餓状態がないことが必要です。
あなたはおそらく[mcve]を付けたいと思うでしょう。コードが何をしているのかを説明するだけの質問には、広範で非特定のレベルで答えにくいです。それを超えて:あなたはここで複数の質問をしています。もう一度やり直して、より具体的な質問をしてください。複数の質問がある場合は、いくつかの質問をしてください。 – GhostCat