1

ループを実行するスレッドがあり、このループでapache common http clientリモートサーバーへの接続を作成し、そこからデータを取得してからしばらくスリープします。私の質問は、ネットワークが遅い場合、choakingGETメソッドがデータをフェッチして戻るのに時間がかかるため、CPU を起動できるかどうかです。

4

3 に答える 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 に答える