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