循环内的HttpURLConnection

时间:2010-06-10 15:29:01

标签: java performance httpurlconnection

我正在尝试连接到一个我知道存在的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存在的快速/最佳方式是什么?

2 个答案:

答案 0 :(得分:0)

从性能的角度来看,这段代码是可以的,它每次都会创建一个新的连接。无论如何,如果循环中有Thread.sleep(3000),则不必担心性能;)

如果您担心服务器端的连接使用情况,可以查看apache HTTP client,它有很多功能。我认为它默认处理保持连接的连接。

答案 1 :(得分:0)

1)使用断开连接,您不希望使用多个打开的连接。丢弃您不使用的资源是任何语言的基本习惯 2)我不知道每3秒打开和关闭新的网络连接是否会污染系统资源,检查它的唯一方法就是尝试。
3)您可能想要观看“ConnectException”,如果“URL [不存在]”则表示服务器已关闭。