线程的挂起与唤醒的问题
我现在做UDP通信,发每一帧数据 都要等应答 。我接收到数据都会将数据放在全局变量里
我发完一帧数据 等应答的时候 就在死循环里判断那个全局变量是否是我要应答,是了就跳出死循环,否则知道超时退出。
就好比是这样
send();//发送数据
waitAck();//等待应答
public waitAck(){
while(true){
if(Strack.equal("myAck"));//如果是我要的应答 我就break; 当然没有的等到 我就超时退出,这里没有超时的代码
break;
}
}
这种方式虽然可行 但是死循环使得CPU的使用率变的很高,浪费了资源,所以我想在等应答的时候先wait();挂起等待应答的循环,直到接收数据线程收到数据,才唤醒我挂起的等应答线程,在让循环往下执行一次去判断接受到得数据,若不是我要等的应答,再挂起。。。不过不知道要如果做,。。。总之我不想一直循环着等,我想有接收到数据才就行一次。。。节省CPU的开销,高手们帮帮我