Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java代码中的多个url连接_Java_Url_Connection - Fatal编程技术网

java代码中的多个url连接

java代码中的多个url连接,java,url,connection,Java,Url,Connection,我有一个函数,它被多次调用 report="http://myURL/some_file.php" + "?someParam=" + getSomeParam()"; 其中myURL总是相同的,some_file.php和someParam每次都不同 private static void makeReport(final String report) { try { URL url = new URL(report); try {

我有一个函数,它被多次调用

report="http://myURL/some_file.php" + "?someParam=" + getSomeParam()";
其中
myURL
总是相同的,
some_file.php
someParam
每次都不同

private static void makeReport(final String report) {
    try {
        URL url = new URL(report);
        try {
            url.openStream();
        } catch (IOException e) {
            return; // do nothing
        }
    } catch (MalformedURLException e) {
        return; // do nothing
    }
}
问题是,如果这是处理这种情况的有效方法,每次 具有不同参数的新连接?而且,报告对主程序没有影响,
那么应该在不同的线程/进程中进行吗?

打开新连接会有一些开销,但听起来您的程序并没有广泛使用套接字,因此开销应该可以忽略不计。你不需要两个试块,顺便说一句,你可以只需要一个试块,然后一个接一个地放接球块

private static void makeReport(final String report) {
    InputStream in = null;
    try {
        URL url = new URL(report);
        in = url.openStream();
    } catch (MalformedURLException e) {
        return; // do nothing
    } catch (IOException e) {
        return; // do nothing
    } finally {
        try { in.close(); } catch (IOException ex) { ex.printStackTrace(); }
    }
}
至于这个方法是否应该放在自己的线程中,则取决于上下文。它需要异步吗?无论如何,发出一个简单的GET请求不应该花费太长时间。我无法想象一种情况下,你会需要它在自己的线程


最后请注意,无论何时打开连接,关闭它总是一个好的做法,尤其是在try-catch-finally(或try-with-resources)构造中。不遵循这种做法是在更复杂的套接字编程中引入连接泄漏的一种好方法。

如果您只是尝试在第一个try块中定义URL并在解析失败时返回,就可以避免内部try/catch。此外,您在哪里
.close()
?这不会像您想象的那样工作,因为
MalformedURLException
扩展了
IOException
。第二个
catch
块将永远不会被处理。嗯,现在,如果URL解析失败,中的
将在
finally
块中为null;)fge/ryanstewart-是的,我经常在finally块中使用try-catch,至少在Java6中是这样。虽然很难看,但它完成了任务。对于Java7,有一个try With resources,它是为这个场景设计的。