84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
发送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连接。
优化一点考虑:不用每个连接消耗一个线程去监听,可以一个线程监听所有连接的相应->选择器。
可以发送完请求后释放连接和资源,让对方处理完后回调你的接口