我写了一个socket程序,server上有多个服务端,server负责一个主程序来管理各个客户端,我按照一个顺序发送信息给客户端,是一个一个发,首先发给第一个客户端1,从信息开始发出的时候我就要开始计时,如果客户端在30秒内没有发送消息给server,那么server就自动的处理,然后继续发送消息给下一个客户端,这里需要使用一个什么技术?timer的话我已经试了,他不会在server的主程序上等待客户端的响应,只是规定多少秒之后执行task,我现在要的是如果在这30秒之内我收到了用户的信息,我就继续给下一个客户端发送信息,超时的话我就默认处理掉,这里涉及到一个性能的问题,希望不需要用while循环等待一个变量来出来,麻烦各位高手指教!!!!
Object shareObj = new Object();
Timer timer;
/////////////////////
Thread for send:
for mem : members
mem.send(msg)
synchronized(shareObj){
timer.schedule()// execute 30 seconds later
shareObj.wait();
}
end//////////////
Thread receive for mem:
when mem received, call
if(!mem.timeout){
timer.cancel
synchronized(shareObj){
shareObj.notify();
}
}//////////////
Timer:
executeTask(){
mem.timeout = true;
timer.cancel
synchronized(shareObj){
shareObj.notify();
}
}
在设置和读取member timeout状态的时候最好也加上同步
的异常啊
看到的一个例子,提供个思路,呵呵