当前位置: 首页 > 知识库问答 >
问题:

并发http请求

钮刚洁
2023-03-14

我在多个线程上运行以下方法:

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请求是并行处理的吗?以这种方式发出请求是否会阻止其他线程发送请求,直到第一个响应到达?

共有1个答案

董意蕴
2023-03-14

可以从不同的线程调用该方法。没有共享变量,因此没有并发问题。但是,您可以通过拥有一个连接池(套接字连接)来优化流程,以重用连接并获得更快的响应。由于无法控制套接字,最终可能会导致时间响应缓慢。当然,我们正在讨论开放的套接字连接,以及服务器保持套接字打开的可能性(keep Alive header)

 类似资料:
  • 并发请求处理 我创建了一个服务器,并使用s.listenandserve()来处理请求。据我所知,这些请求是同时送达的。我使用一个简单的处理程序来检查它: 我看到,如果我发送了几个请求,我将看到所有的“1”出现,只有在一秒钟后所有的“2”出现。但是如果删除Hibernate行,我会看到程序在完成前一个请求之前从不启动请求(输出为1 2 1 2 1 2...)。所以我不明白,如果它们是并发的还是不是

  • 很多时候我们需要在页面打开的时候,读取远程的内容,然后在当前页面显示. 这就需要用到 http请求了. vue页面调用http请求 vuejs 内置了对发送http请求的支持. 只需要在对应页面的script 标签内加上对应的代码就好. 例如: 我们新增一个页面,叫 "博客列表页" : src/components/BlogList.vue, 内容如下: <template> <div >

  • 现在,我希望交错控制器的一个选项为同一个用户激发两个或三个并发请求,并在每个请求中发送相同的cookie。 我如何做到这一点?

  • 问题内容: 我正在尝试发出POST请求以检索有关一本书的信息。这是返回HTTP代码的代码:302,已移动 当我从浏览器尝试时,可以从以下页面进行操作:http : //www.bkstr.com/webapp/wcs/stores/servlet/BuybackMaterialsView?langId=-1&catalogId=10001&storeId=10051&schoolStoreId=1

  • 问题内容: 我目前正在尝试使用Go进行一些实验。这是我正在尝试做的事情: 我有一个REST API服务正在运行,我想在尽可能多的Goroutine中反复查询特定的URL,以查看这些响应的性能如何(通过查看我的REST API服务器日志)。在退出程序之前,我想发送总计100万个HTTP请求-在计算机允许的范围内同时执行。 我知道有一些工具可以做到这一点,但是我主要对如何使用goroutines在Go