ループを実行するスレッドがあり、このループでapache common http client
リモートサーバーへの接続を作成し、そこからデータを取得してからしばらくスリープします。私の質問は、ネットワークが遅い場合、choaking
GETメソッドがデータをフェッチして戻るのに時間がかかるため、CPU を起動できるかどうかです。
質問する
979 次
3 に答える
0
これにより CPU 負荷が高くなるとは思いませんが、GET 中にスレッドが長時間ブロックされ、プログラムが遅く見える場合があります。ネットワークが遅い場合、GET は IO を待機する必要があります。これは通常、多くの CPU を使用しません。
于 2013-03-26T09:15:14.327 に答える
0
ネットワークは I/O 操作であり、通常は周辺機器によって実行されるため、CPU は操作が完了するのを待つだけです。オペレーティング システムは、I/O 操作が完了するまでスレッドの実行をブロックします。スレッドのライフサイクルを参照してください。「I/O がブロックされている」という特別な状態があります。
于 2013-03-26T09:15:40.777 に答える
0
いいえ、CPU がスタックすることはありませんが、アプリケーションがスタックするだけです (別のネットワーク スレッドがある場合でも、これは発生しません)。
また、ネットワーク操作は I/O 操作であるため、CPU を使用しません。そのため、スレッドのブロック期間中、CPU 時間はそのブロックされたスレッドに割り当てられません。
于 2013-03-26T09:16:14.210 に答える