[英]Ping a server without freezing the Thread
我試圖使用多個線程,遺憾的是沒有運氣:
public synchronized boolean pingServer(final String ip, final short port) {
final boolean[] returnbol = new boolean[1];
Thread tt = new Thread(new Runnable() {
@Override
public void run() {
try {
Socket s = new Socket(ip, port);
s.close();
returnbol[0] = true;
} catch (IOException e) {
returnbol[0] = false;
}
}
});
tt.start();
try {
tt.join();
} catch (InterruptedException e) {
tt.stop();
}
tt.stop();
return returnbol[0];
}
由於某種原因,主線程仍然凍結。
ping服務器有“無法”的方法嗎?
您需要從代碼中刪除以下行。 tt.join()將強制主線程等待tt完成。
try {
tt.join();
} catch (InterruptedException e) {
tt.stop();
}
tt.stop();
使用Future來獲取結果供以后使用
你究竟想要得到什么?
try {
tt.join();
} catch (InterruptedException e) {
tt.stop();
}
塊? 在這里你加入了並行線程並等待這個線程結束(獲得ping結果)。
你有下一個選擇:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.