Java 异步http请求。

新手上路,请多包涵

发送http 请求(request)后,需要等待一段时间,比如30秒后才能得到响应(response)。采用java,如何高效的实现在一定时间内,发送http请求后,得到尽可能多的响应。
我尝试过线程池,但是我有大约十多种不同类型的http请求,线程池数量一多比较消耗资源。我也试过Apache的HttpAsyncioRequest,但是其内部实现就是线程池,在我的这个问题上实现效率也不高。有没有比较好的库或者方法,或者类似python coroutine那样,可以高效的实现并发请求。

阅读 10.4k
2 个回答

参考NIO选择器

原始一点来考虑:

  1. 不管你多并发多异步,一个http请求发出去前肯定要建立一个TCP连接,发出去后,客户端肯定要有一个线程处于监听状态等待服务器的返回。

  2. 客户端非阻塞发http请求,每个线程请求发出去后创建一个新线程去监听http返回,原先的线程去做其他的工作。

这种方案会消耗double N个线程,N个TCP连接。

优化一点考虑:不用每个连接消耗一个线程去监听,可以一个线程监听所有连接的相应->选择器。

可以发送完请求后释放连接和资源,让对方处理完后回调你的接口

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题