我有一些相当基本的代码来从给定的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中我有"隐藏用户态线程"打开。到底是怎么回事?是发送多个请求还是只发送一个?
答案 0 :(得分:0)
您无意中多次运行该命令。如果您无法在shell命令中的URL中转义&
,则会发生这种情况。 Bash将&
字符解释为“在后台运行此命令”,然后返回shell提示符,但您的进程仍在运行。
将网址放在单引号中,您就不会遇到问题。