日期:2014-05-20  浏览次数:20865 次

java Timer 定时器不按照时间运行
之前用eclipse有段代码是让每天一个固定的时间点发邮件的。有一次因为升级服务器把程序暂停。重启后就不能按照时间发邮件,而是每天在我重启它的那个时间发邮件了,百思不得其解,求帮助。代码段如下:
   Calendar date = Calendar.getInstance();
    date.set(
      Calendar.DAY_OF_WEEK,
      Calendar.TUESDAY
    );
    
    date.set(Calendar.AM_PM, Calendar.AM);
    date.set(Calendar.HOUR, 7);
    date.set(Calendar.MINUTE, 0);
    date.set(Calendar.SECOND, 0);
    date.set(Calendar.MILLISECOND, 0);
               Timer timer_RDR = new Timer();
               timer_RDR.schedule(new RDR_Email(), date.getTime(), daily_period );

这个Timer的运行有什么讲究吗?谢谢


------解决方案--------------------
上面写错了点:

schedule的时候要判断启动时的时间(start)与真正要发送邮件的时间(real)的关系,若start比real,那么今天可以发邮件,若start已经超过了real,则今天就不能再发邮件了,把delay推迟到明天该发的时候
------解决方案--------------------
scheduleAtFixedRate