HttpURLConnection会产生大量进程吗?

时间:2013-03-12 11:03:35

标签: java http

我有一些相当基本的代码来从给定的URL获取HTTP状态代码:

URL url = new URL(args[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(10000);
connection.setReadTimeout(10000);
connection.setInstanceFollowRedirects(true);

int code = connection.getResponseCode();
connection.disconnect();

System.out.print(code);
System.exit(0);

显然一切都在try / catch块中,但他们所做的只是退出并出错。代码似乎有用,所以我针对它运行了一个URL列表。我监视过程,并注意到在某些URL上,产生了大约10个相同URL的Java实例。

换句话说,我会跑:

java -jar HTTP.jar {URL}

当我运行htop时看到该命令大约10次。它们看起来像常规进程,而不是线程,而且在htop中我有"隐藏用户态线程"打开。到底是怎么回事?是发送多个请求还是只发送一个?

1 个答案:

答案 0 :(得分:0)

您无意中多次运行该命令。如果您无法在shell命令中的URL中转义&,则会发生这种情况。 Bash将&字符解释为“在后台运行此命令”,然后返回shell提示符,但您的进程仍在运行。

将网址放在单引号中,您就不会遇到问题。