if(message.trim().startsWith(ContactsEntry.CONTACT_RECEIVED_MESSGAE_PREFIX)){
//System.out.println("The contactTimer "+(null == contactTimer)+",The contactReloadTimer "+(null == contactReloadTimer));
messageCount++;
if (null == contactTimer) {
contactTimer = new Timer();
}
contactTask = new TimerTask() {
public void run() {
int size = recieveInterval / (messageCount*avageTime);
System.out.println("************The size is " + size + " ,The messageCount is ****************"+ messageCount);
if (size <3) {
rightNowReload = false;
} else {
rightNowReload = true;
}
//-----------------------------根据rightNowReload 判断是否立即加载-----------------------------------------
if(rightNowReload){
System.out.println(".........rightNowReload.........");
GetPersonList.handleRecivedMessage(message);
rightNowReload = false;
messageCount = 0;
contactTimer.cancel();
contactTimer=null;
}else{
if(null==contactReloadTimer){
contactReloadTimer = new Timer();
}
timerTask = new TimerTask() {
public void run() {
System.out.println(".........Not rightNowReload............");
GetPersonList.handleRecivedMessage(message);
rightNowReload = false;
messageCount = 0;
contactTimer.cancel();
contactTimer=null;
contactReloadTimer.cancel();
contactReloadTimer = null;
}
};
contactReloadTimer.schedule(timerTask, queryInterval);
}
// contactTimer.cancel();
// contactTimer=null;
// messageCount = 0;
}
};
contactTimer.schedule(contactTask, recieveInterval);
两个定时器嵌套调用问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- u010932348 2015-01-13 02:15关注
两个定时器一个用来统计一定时间内接到的消息数量,另一个根据消息数量来决定是否立即加载还是延迟一段时间后加载,大的环境JDK1.4下,问题原因是根据收到的消息做更新,但若是一次接收到太多的消息,针对每次的更新会导致死机,代码是有问题的,望大神们给予建议
解决 无用评论 打赏 举报