本人用Java socket编程,多线程程序,发现CPU占用率非常高,经过一番研究,问题解决,特记录如下。
首先上问题代码(代码同时实现了超时机制):
/**
* 发送完毕以后等待服务器返回数据的函数 实现了超时机制
*/
public Boolean awaitReturnOLD(int timeout) {
Boolean result = false;// 上锁:实现超时机制第一步
expectedArriveLatch = new CountDownLatch(1);//任务放到线程:实现超时机制第二步
new Thread(new Runnable() {
@Override
public void run() {
pullBuffer = null;
int count = 0;
while (true) {
try {
// 读信息
while (count == 0)
count = in.available();
byte[] b = new byte[count];