u010932348 2015-01-13 02:11 采纳率: 0%
浏览 3547

两个定时器嵌套调用问题

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);

  • 写回答

1条回答 默认 最新

  • u010932348 2015-01-13 02:15
    关注

    两个定时器一个用来统计一定时间内接到的消息数量,另一个根据消息数量来决定是否立即加载还是延迟一段时间后加载,大的环境JDK1.4下,问题原因是根据收到的消息做更新,但若是一次接收到太多的消息,针对每次的更新会导致死机,代码是有问题的,望大神们给予建议

    评论

报告相同问题?

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突