(原)Java死循环造成CPU占用率特别高
在Socket编程中,要采用多线程去处理网络流,客户端需要不停的去监听端口中是否有数据过来,这里采用基本的流收发,DataInputStream在所有的read方法都是阻塞的,只有available这一个方法是非阻塞的,当我判断是否有流的时间,采用available但网络流无数据的时间造成了无限循环,使CPU的占用比达到50%,当去掉这个判断之后,当调用read方法的时间就阻塞到哪里,这样CPU的占用比为0%(约等于),可见我们在写程序的时间,要时刻关注我们程序里面的死循环,最好是在if后面加上else输出一句话,或者DEBUG一下。我倾向于前者,更加直观。
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 9班|9班 刘志雪
- 死结。
- 赵原野传|赵原野传 孤独
- 做一件事情的基本原理是什么()
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- gitlab|gitlab 通过备份还原 admin/runner 500 Internal Server Error
- 靈魂裡有香氣的人
- 二、抱朴守拙|二、抱朴守拙 涉世之法