如果找不到URL内容,则失败得更快,如何

时间:2014-08-21 16:17:11

标签: java multithreading

我有一个线程池循环遍历一堆页面并检查是否存在某些字符串。如果找到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");
        }
    }
}

1 个答案:

答案 0 :(得分:1)

  

如果服务器脱机或应用程序未运行,则拒绝似乎需要几秒钟

根据需要设置超时。

如果您从URL打开URLConnection,则可以设置超时。

URL url = new URL(urlPath);
URLConnection con = url.openConnection();
con.setConnectTimeout(connectTimeout);
con.setReadTimeout(readTimeout);
InputStream in = con.getInputStream();