【发布时间】:2017-06-11 19:50:03
【问题描述】:
我在多个线程上运行以下方法:
private JSONObject jsonFromUrl(String requestUrl) {
try {
URLConnection connection = new URL(requestUrl).openConnection();
connection.setRequestProperty("Accept-Charset", charset);
InputStream response = connection.getInputStream();
JSONParser jsonParser = new JSONParser();
return (JSONObject)jsonParser.parse(
new InputStreamReader(response,charset));
} catch (Exception e) {
Logger.error("Exception while sending request: " + requestUrl + " error: " + e);
e.printStackTrace();
return new JSONObject();
}
}
是否并行处理 HTTP 请求?以这种方式发出请求是否会阻止其他线程发送请求,直到第一个响应到达?
【问题讨论】:
-
答案:并行,是的。阻止其他实例,不。您是否有理由怀疑您不能在不同线程中发生多个 URL 下载实例?
-
滞后时间比预期的要长,无法确定这是由于连接还是缺乏并行性
-
你在任何地方关闭你的 InputStream 吗?
-
@FlorianAlbrecht - 我愿意。
-
好吧,我的问题表明我看不到这一点,因为它不在您的方法中。由于 InputStream 在方法中打开 - 它在哪里关闭?
标签: java multithreading concurrency parallel-processing httprequest