使用监听器执行定时任务

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毫秒执行一次。

这种方式定时执行,这样会依赖于我部署的时间,不知道还有没有其他解决方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Timer 定时器相信都不会陌生,之所以拿它来做源码分析,是发现整个控制流程可以体现很多有意思的东西。 在业务开发...
    石先阅读 6,505评论 2 13
  • 念一段故事 ▼ 你谈过几段恋爱,在大学的时候 来自念一段故事 00:0009:10 ⊰主播:芝子 / 文:芝子⊱ ...
    写不尽的木木阅读 322评论 0 0
  • 【注:好多图都是网上找的,都没去水印,因为昨天太激动了,而且有点远自己拍的质量都不太好,只好借用一下大家的美图啦!...
    Amy沈阅读 415评论 0 1
  • 邀一轮明月,携一缕清风,品一盏香茗,手捧一卷书,任思绪畅游其中。千年的兼葭散发着晚香,细品纯朴的民风;...
    聂鸿芝阅读 283评论 1 0
  • 1.把所有的失利当成流沙,把已有的成功当作浮云。无论是痛苦伤心,还是快乐欢欣;都不要迷失了最初,为梦执著的自我。 ...
    肖先生肖军阅读 313评论 0 0

友情链接更多精彩内容