在做Socket编程的时候
为什么总要使线程sleep,不太明白地说例如:public void run(){
while(true){
try{
String inStr = bufferedReader.readLine();
if(inStr.equals("exit")){
printWriter.close();
bufferedReader.close();
break;
}else{
printWriter.println("From Server: " + inStr);
}
sleep(300);
}catch(Exception e){
printWriter = null;
bufferedReader = null;
throw new RuntimeException(e);
}
}
}
为什么总要使线程sleep,不太明白地说例如:public void run(){
while(true){
try{
String inStr = bufferedReader.readLine();
if(inStr.equals("exit")){
printWriter.close();
bufferedReader.close();
break;
}else{
printWriter.println("From Server: " + inStr);
}
sleep(300);
}catch(Exception e){
printWriter = null;
bufferedReader = null;
throw new RuntimeException(e);
}
}
}
现在的CPU太快了,如果不sleep一下,这个线程就有可能一直运行到CPU分配给它的时间片完了才执行其他线程,这样就有可能一直执行一个线程,交替就不是很明显,让你看了输出结果你还以为跟没多线程的效果一样
可以用yield替换sleep