4

我正在从这样的套接字输入流中读取

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

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

现在,输入流的读取方法会阻塞,直到数据可用。

在这种情况下,冷却线程是个好主意吗?10ms 后它无论如何都会阻塞。

请不要告诉我关于非阻塞 IO 的事情,我知道这一点。

我只是好奇它是否有助于性能/CPU。

4

2 回答 2

8

没有。没有理由睡觉。为什么人为地减慢读取循环?让它尽可能快地读取数据。

于 2013-09-11T16:10:32.683 回答
3

如果你想让其他线程有一个 cpu 时间,你应该使用:

Thread.yield();

但我认为这里没有必要——让系统线程调度完成它的工作——这非常好。

于 2013-09-11T16:12:14.530 回答