我有一个线程池循环遍历一堆页面并检查是否存在某些字符串。如果找到String,或者找不到响应即将发生,但是如果服务器处于脱机状态或应用程序未运行,则拒绝似乎需要几秒钟
如何更改代码以更快地失败?
for (Thread thread : pool) {
thread.start();
}
for (Thread thread : pool) {
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
这是我的运行方法
@Override
public void run() {
for (Box b : boxes) {
try {
connection = new URL(b.getUrl()).openConnection();
scanner = new Scanner(connection.getInputStream());
scanner.useDelimiter("\\Z");
content = scanner.next();
if (content.equals("YES")) {
} else {
System.out.println("\tFAILED ON " + b.getName() + " BAD APPLICATION STATE");
}
} catch (Exception ex) {
System.out.println("\tFAILED ON " + b.getName() + " BAD APPLICATION STATE");
}
}
}
答案 0 :(得分:1)
如果服务器脱机或应用程序未运行,则拒绝似乎需要几秒钟
根据需要设置超时。
如果您从URL
打开URLConnection
,则可以设置超时。
URL url = new URL(urlPath);
URLConnection con = url.openConnection();
con.setConnectTimeout(connectTimeout);
con.setReadTimeout(readTimeout);
InputStream in = con.getInputStream();