发送http 请求(request)后,需要等待一段时间,比如30秒后才能得到响应(response)。采用java,如何高效的实现在一定时间内,发送http请求后,得到尽可能多的响应。我尝试过线程池,但是我有大约十多种不同类型的http请求,线程池数量一多比较消耗资源。我也试过Apache的HttpAsyncioRequest,但是其内部实现就是线程池,在我的这个问题上实现效率也不高。有没有比较好的库或者方法,或者类似python coroutine那样,可以高效的实现并发请求。
走同样的路,发现不同的人生
參考NIO選擇器
原始一點來考慮:
不管你多並發多異步,一個http請求發出去前肯定要建立一個TCP連接,發出去後,客戶端肯定要有一個線程處於監聽狀態等待伺服器的返回。
客戶端非阻塞發http請求,每個線程請求發出去後創建一個新線程去監聽http返回,原先的線程去做其他的工作。
這種方案會消耗double N個線程,N個TCP連線。
優化一點考慮:不用每個連線消耗一個執行緒去監聽,可以一個執行緒監聽所有連接的對應->選擇器。
可以發送完請求後釋放連線和資源,讓對方處理完後回呼你的介面
參考NIO選擇器
原始一點來考慮:
不管你多並發多異步,一個http請求發出去前肯定要建立一個TCP連接,發出去後,客戶端肯定要有一個線程處於監聽狀態等待伺服器的返回。
客戶端非阻塞發http請求,每個線程請求發出去後創建一個新線程去監聽http返回,原先的線程去做其他的工作。
這種方案會消耗double N個線程,N個TCP連線。
優化一點考慮:不用每個連線消耗一個執行緒去監聽,可以一個執行緒監聽所有連接的對應->選擇器。
可以發送完請求後釋放連線和資源,讓對方處理完後回呼你的介面