Java 循环内的HttpURLConnection

Java 循环内的HttpURLConnection,java,performance,httpurlconnection,Java,Performance,Httpurlconnection,我正在尝试连接到一个我知道存在但不知道何时存在的URL。 我没有访问此服务器的权限,因此无法更改任何内容以接收事件 实际代码如下所示 URL url = new URL(urlName); for(int j = 0 ; j< POOLING && disconnected; j++){ HttpURLConnection connection = (HttpURLConnection) url.openConnection(); int status =

我正在尝试连接到一个我知道存在但不知道何时存在的URL。 我没有访问此服务器的权限,因此无法更改任何内容以接收事件

实际代码如下所示

URL url = new URL(urlName);
for(int j = 0 ; j< POOLING && disconnected; j++){
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    int status = connection.getResponseCode();
    if(status == HttpURLConnection.HTTP_OK || status == HttpURLConnection.HTTP_NOT_MODIFIED){
        //Some work
    }else{
        //wait 3s
        Thread.sleep(3000);       
    }
}
Java不是我最好的技能,我不确定从性能的角度来看,这段代码是否好。 我每3秒打开一个新连接?还是重复使用连接

如果我调用disconnect,我会确保循环中没有打开新的连接,但是。。。它将影响性能


建议?了解URL是否存在的最快/最佳方法是什么?

从性能角度来看,这段代码没有问题,每次都会创建一个新连接。无论如何,如果循环中有Thread.sleep3000,就不必担心性能


如果您关心服务器端的连接使用情况,可以查看apache,它有很多特性。我认为默认情况下,它会处理保持活动状态的连接。

1请使用断开连接,因为您不需要大量不使用的打开连接。丢弃不使用的资源是任何语言的基本实践。 2我不知道每3秒钟打开和关闭一次新的网络连接是否会污染系统资源,唯一的检查方法是尝试。
3您可能需要注意“ConnectException”,如果URL[不]存在,则表示服务器已关闭。

我认为他从使用系统资源的角度谈论性能。使用网络是特定于操作系统的,可能存在各种奇怪的限制。例如,我曾经遇到过一个问题,windows不允许我在时间t内打开超过n个套接字连接。问题在于其他服务器的资源。他们说我们打开的连接比预期的要多。我不确定这是否是由于循环中的openConnection导致的代码的要点。@Carlos Garces您可以尝试使用“断开连接”,看看他们是否再次抱怨:或者您可以要求他们更清楚地阐述限制。URL[不存在]表示URL返回404。但这是暂时的。。它将存在,URL由其他进程根据需要创建。