Java - 线程中的URL连接

时间:2011-05-09 00:03:31

标签: java multithreading url connection

我目前有一个项目,其中从在线CGI文件请求不同的参数,并且每个请求应该在不同的线程中处理。当我自己运行我的代码时它工作得很好,但是当我把它放在一个线程中它似乎没有连接。 我的代码如下:

public void run() {
    connect();
}


public synchronized void connect(){
    StringBuffer response = new StringBuffer("");
    try {

        String data = "year=" + year + "&top=" + numNames + "number=";
        // Send data
        URL url = new URL("http://www.ssa.gov/cgi-bin/popularnames.cgi");
        URLConnection conn = url.openConnection();
        conn.setDoOutput(true);
        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
        wr.write(data);
        wr.flush();
        // Get the response
        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line;

        while ((line = rd.readLine()) != null) {
            response.append(line);
        }
        wr.close();
        rd.close();
    } catch (Exception e) {
        System.out.println(e);
    }
System.out.println(response);
        }
    }

1 个答案:

答案 0 :(得分:0)

删除connect上的同步调用。这应该可以解决你的问题

public synchronized void connect(){