我有一个通过套接字与客户端通信的 java 服务器应用程序。每个客户端请求都在一个新线程中处理。但是对于某些请求,我需要同步两个客户端。
例子:
- 客户端 A 向服务器 S 发送请求。
- S上的线程S1接受A的请求。
- S1 将此请求通知客户端 B(通过 GoogleCloudMessaging)。
- S1 现在应该阻塞
- 客户端 B 接收到来自 S 的信息并向 S 发送请求。
- S上的线程S2接受B的请求。
- S1 应该立即发布并从 S2 获取消息
- S1 将答案发送给客户端 A
我知道Lock Condition机制,但这在这里不起作用,因为我不知道创建线程时的条件。我需要类似的东西:
// 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中有这样的可能吗?我的问题还有其他解决方案吗?