等待-超时模式
与等待/通知(wait/notify)模式类似。
有时候,我们需要某些方法在等待一段时间后,若还不能完成工作,则返回(或返回默认值)。
synchronized Object work(long millseconds){
long future = System.currentTimeMillis()+millseconds;
long remainTime = millseconds;
while(remainTime>0){
if(<condition not satisfied>){
wait(remainTime);//最多等待超时时间的量,有可能通知后,但是条件不满足,那么要更新时间,保证最多等待millseconds
}else{
return result;
}
remainTime = future - System.currentTimeMillis();//更新时间
}
return defaultValue
}