发送http 请求(request)后,需要等待一段时间,比如30秒后才能得到响应(response)。采用java,如何高效的实现在一定时间内,发送http请求后,得到尽可能多的响应。我尝试过线程池,但是我有大约十多种不同类型的http请求,线程池数量一多比较消耗资源。我也试过Apache的HttpAsyncioRequest,但是其内部实现就是线程池,在我的这个问题上实现效率也不高。有没有比较好的库或者方法,或者类似python coroutine那样,可以高效的实现并发请求。
走同样的路,发现不同的人生
NIO 선택기 참조
원시적으로 생각해 보세요.
아무리 동시적이든 비동기적이든 관계없이 http 요청이 전송되기 전에 TCP 연결이 설정되어야 합니다. 클라이언트는 서버의 반환을 기다리는 청취 상태의 스레드를 가져야 합니다.
클라이언트는 비차단 방식으로 http 요청을 보냅니다. 각 스레드 요청이 전송된 후 http 반환을 수신하기 위해 새 스레드가 생성되고 원래 스레드는 다른 작업을 수행합니다.
이 솔루션은 이중 N 스레드와 N TCP 연결을 사용합니다.
최적화를 위한 몇 가지 고려 사항: 각 연결을 모니터링하기 위해 스레드를 사용하는 대신 하나의 스레드가 모든 연결의 해당 -> 선택기를 모니터링할 수 있습니다.
요청을 보낸 후 연결과 리소스를 해제하고, 처리 후 상대방이 인터페이스를 다시 콜백하도록 할 수 있습니다.
NIO 선택기 참조
원시적으로 생각해 보세요.
아무리 동시적이든 비동기적이든 관계없이 http 요청이 전송되기 전에 TCP 연결이 설정되어야 합니다. 클라이언트는 서버의 반환을 기다리는 청취 상태의 스레드를 가져야 합니다.
클라이언트는 비차단 방식으로 http 요청을 보냅니다. 각 스레드 요청이 전송된 후 http 반환을 수신하기 위해 새 스레드가 생성되고 원래 스레드는 다른 작업을 수행합니다.
이 솔루션은 이중 N 스레드와 N TCP 연결을 사용합니다.
최적화를 위한 몇 가지 고려 사항: 각 연결을 모니터링하기 위해 스레드를 사용하는 대신 하나의 스레드가 모든 연결의 해당 -> 선택기를 모니터링할 수 있습니다.
요청을 보낸 후 연결과 리소스를 해제하고, 처리 후 상대방이 인터페이스를 다시 콜백하도록 할 수 있습니다.