从套接字流中读取时是否需要线程休眠?

时间:2013-09-11 16:08:04

标签: java multithreading sockets io

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

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

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

现在,the read method of an input stream会阻止数据可用。

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

请不要告诉我有关非阻塞IO的信息,我知道这一点。

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

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:3)

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

Thread.yield();

但是我认为这不是必要的 - 让系统线程调度完成它的工作 - 它非常好。