(原)Java死循环造成CPU占用率特别高

在Socket编程中,要采用多线程去处理网络流,客户端需要不停的去监听端口中是否有数据过来,这里采用基本的流收发,DataInputStream在所有的read方法都是阻塞的,只有available这一个方法是非阻塞的,当我判断是否有流的时间,采用available但网络流无数据的时间造成了无限循环,使CPU的占用比达到50%,当去掉这个判断之后,当调用read方法的时间就阻塞到哪里,这样CPU的占用比为0%(约等于),可见我们在写程序的时间,要时刻关注我们程序里面的死循环,最好是在if后面加上else输出一句话,或者DEBUG一下。我倾向于前者,更加直观。

    推荐阅读