ソケットを介してクライアントと通信するJavaサーバーアプリケーションがあります。すべてのクライアント要求は新しいスレッドで処理されます。しかし、いくつかのリクエストでは、2 つのクライアントを同期する必要があります。
例:
- クライアント A がサーバー S にリクエストを送信します。
- S 上のスレッド S1 は、A の要求を受け入れます。
- S1 はクライアント B にこのリクエストについて通知します (GoogleCloudMessaging 経由)。
- S1 は今すぐブロックする必要があります
- クライアント B は S から情報を受け取り、S に要求を送信します。
- S 上のスレッド S2 は、B の要求を受け入れます。
- S1 を今すぐリリースし、S2 からメッセージを取得する必要があります
- S1 はクライアント A に応答を送信します
ロック条件メカニズムについては知っていますが、スレッドを作成するときの条件がわからないため、ここでは機能しません。次のようなものが必要です:
// Pseudo Code
// on the S1 Thread, first argument beeing a signal ID, second a timeout
s1.waitForSignal("clientB", 10000);
// and on the S2 Thread to continue S1
SignalSender.send("clientB");
Javaでこのようなことは可能ですか? 私の問題に対する他の解決策はありますか?