我有一些相当基本的代码来从给定的 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 上,为同一个 URL 生成了大约 10 个 Java 实例。
换句话说,我会运行:
java -jar HTTP.jar {URL}
当我运行 htop 时,看到该命令大约 10 次。它们看起来像常规进程,而不是线程,并且在 htop 中我打开了“隐藏用户态线程”。到底是怎么回事?是发送多个请求还是仅发送一个?