网络 - Java 异步http请求。
怪我咯
怪我咯 2017-04-17 17:19:27
0
2
664

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

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
小葫芦

参考NIO选择器

原始一点来考虑:

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

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

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

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

洪涛

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!