freeshare有个功能:应用机器人定时向企业发送用户活跃度的帖子,这里需要通过struts2<listener> 设定监听,并通过Listener类设置定时任务,我本来想设定每周日晚上某个时间执行任务,不依赖于我部署的时间,因为一部署就会开始启动listener:
//Get the Date corresponding to 11:01:00 pm today.
Calendar calendar = Calendar.getInstance(); //这里会获取当前时间周年月日时分秒
calendar.set(Calendar.HOUR_OF_DAY,23);
calendar.set(Calendar.MINUTE,25);
calendar.set(Calendar.SECOND,0);
Date time = calendar.getTime();
timer =newTimer();
timer.schedule(newRemindTask(), time);
timer.schedule(task, time);// time为Date类型:在指定时间执行一次(并不会定期执行,执行完一次就结束)
这个方法的源码中有句英文:
Schedules the specified task for execution at the specified time. If the time is in the past, the task is scheduled for immediate execution.
我写的时候是周一,我设置的calendar是周日,但是他会自动认为是上周日(也就是昨天),所以我一运行工程他就会执行一遍,但是我设置周二就不会execute immediately。
注意,我的要求是每周定时执行,所以其实这样设时间是不行的,只能通过:
timer.schedule(task, delay, period)// delay为long,period为long:从现在起过delay毫秒以后,每隔period毫秒执行一次。
这种方式定时执行,这样会依赖于我部署的时间,不知道还有没有其他解决方法。
网友评论