4

私はこのようなソケット入力ストリームから読んでいます

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line;

while((line = in.readLine()) != null){
   // do something
   Thread.sleep(10); // for example 10ms
}

現在、入力ストリームの読み取りメソッドは、データが利用可能になるまでブロックされます。

この場合、スレッドをクールダウンするのは良い考えですか? とにかく10ミリ秒後にブロックされます。

ノンブロッキング IO について教えないでください。私はそれについて知っています。

とにかくパフォーマンス/ CPUに役立つかどうかに興味があります.

4

2 に答える 2

8

いいえ。眠る理由がない。人為的に読み取りループを遅くするのはなぜですか? 入ってくるのと同じ速さでデータを読み取らせます。

于 2013-09-11T16:10:32.683 に答える
3

他のスレッドに CPU 時間を割り当てたい場合は、次を使用する必要があります。

Thread.yield();

しかし、ここでは必要ではないと思います。システム スレッドのスケジューリングに任せてください。これで十分です。

于 2013-09-11T16:12:14.530 に答える