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

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

怪我咯
怪我咯

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

全部回覆(2)
小葫芦

參考NIO選擇器

原始一點來考慮:

  1. 不管你多並發多異步,一個http請求發出去前肯定要建立一個TCP連接,發出去後,客戶端肯定要有一個線程處於監聽狀態等待伺服器的返回。

  2. 客戶端非阻塞發http請求,每個線程請求發出去後創建一個新線程去監聽http返回,原先的線程去做其他的工作。

這種方案會消耗double N個線程,N個TCP連線。

優化一點考慮:不用每個連線消耗一個執行緒去監聽,可以一個執行緒監聽所有連接的對應->選擇器。

洪涛

可以發送完請求後釋放連線和資源,讓對方處理完後回呼你的介面

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板