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