- CPU利用率100%,什么原因?
- Buffer的使用
java 代码
- /**
- * @author winter
- * 接收线程
- */
- class ReceiveThread extends Thread {
- SocketChannel client = null;
- ByteBuffer buffer = ByteBuffer.allocate(50);
- private boolean val = true;
- public ReceiveThread(SocketChannel client) {
- this.client = client;
- }
- public void run() {
- while (val) {
- try {
- while (client.read(buffer) > 0) { //此处程序进入无限循环直道满足条件
- buffer.flip();
- String result = decode(buffer);
- System.out.println(">" + result);
- buffer.flip();
- }
- } catch (IOException ex) {
- ex.printStackTrace();
- return;
- }
- }
- }
- }
本文介绍了一个Java程序中由于Buffer处理不当导致CPU利用率100%的问题。通过一个具体的ReceiveThread类实例,展示了当从SocketChannel读取数据到ByteBuffer时,由于没有正确的退出条件而形成的无限循环。
1140

被折叠的 条评论
为什么被折叠?



