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

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

怪我咯
怪我咯

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

全員に返信(2)
小葫芦

リファレンス NIO セレクター

原始的な方法で考えてみましょう:

  1. どれだけ同時か非同期かに関係なく、http リクエストが送信される前に TCP 接続が確立されている必要があります。送信後、クライアントはサーバーからの応答を待機するスレッドを待機状態にする必要があります。

  2. クライアントは http リクエストをノンブロッキングで送信し、各スレッド リクエストが送信された後、http の戻りをリッスンする新しいスレッドが作成され、元のスレッドが他の作業を実行します。

このソリューションは 2 倍の N スレッドと N TCP 接続を消費します。

最適化に関するいくつかの考慮事項: 各接続を監視するためにスレッドを消費する代わりに、1 つのスレッドですべての接続の対応する -> セレクターを監視できます。

いいねを押す +0
洪涛

リクエストの送信後に接続とリソースを解放し、処理後に相手がインターフェースをコールバックできるようにすることができます

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート