Java 线程睡眠连接
我有一个网络客户端,它在一个循环中尝试3次连接到服务器。在此期间,我使用睡眠线程。有没有办法替换Java 线程睡眠连接,java,multithreading,Java,Multithreading,我有一个网络客户端,它在一个循环中尝试3次连接到服务器。在此期间,我使用睡眠线程。有没有办法替换Thread.sleep(700)带有一些代码,这些代码在客户端连接后立即跳过等待时间 NClient pc; if (pc == null) { try { Thread.sleep(700); } catch (InterruptedException x) { //TODO } if (pc != nul
Thread.sleep(700)
带有一些代码,这些代码在客户端连接后立即跳过等待时间
NClient pc;
if (pc == null)
{
try
{
Thread.sleep(700);
}
catch (InterruptedException x)
{
//TODO
}
if (pc != null)
{
outPrint.println("Connected");
break;
}
}
我希望通过缩短正在进行连接协商的等待时间来改善用户体验。Java中有哪些选项可以做到这一点?这个问题的答案取决于
NClient
的实现。通常,我会为此使用连接超时
。下面的示例说明如何使用套接字执行此操作。我不知道什么是NClient
,所以很遗憾,我不能给你一个NClient
示例
创建尝试连接的方法-最多3次
Socket connectToServer() {
Socket socket = new Socket();
final int connectTimeoutMs = 700;
for (int i=0; i<3; i++) {
try {
// the call to connect blocks the current thread for a maximum of 700ms if it can't connect
socket.connect(new InetSocketAddress("localhost", 8080), connectTimeoutMs);
} catch (IOException e) {
// failed to successfully connect within 700 milliseconds
e.printStackTrace();
}
}
return socket;
}
Socket socket = connectToServer();
if (socket.isConnected()) {
// do stuff with the valid socket!
}
简而言之,使用连接超时
为什么??connect()方法仍将阻止。你不需要再睡一会儿。