我正在分发课程。现在,我想在客户端发送或接收来自压碎服务器的数据时设置超时,并让它与可用服务器重新连接。我想在这里添加一些东西让客户意识到时间已经足够长了。
sendMessage(new TextMessage(kvjson));
TextMessage resultMsg = receiveMessage();
我想在这里使用一个线程就像一个计数器,当时间结束时,只需跳过up语句。但我意识到如果有一个被压碎的服务器,客户端可能只是卡在方法内部并且永远不会返回。另外,我不知道主进程如何知道我的超时头已经完成。我认为它与中断和睡眠有关?检查在线来源后,我仍然感到困惑。所以我在这里发布。 感谢您的回答和患者提前!
答案 0 :(得分:0)
您可以将客户端调用包装在自己的线程中,并使用Future对象等待响应。 Future对象将等待你想要的时间,并且可以在一段时间后超时。然后,您可以处理超时。见下面的例子。
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> future = executor.submit(() -> {
//long running process
TimeUnit.SECONDS.sleep(10);
return "finished";
});
try {
future.get(5, TimeUnit.SECONDS);
} catch (Exception e) {
//deal with the timeout
}