美文网首页
使用监听器执行定时任务

使用监听器执行定时任务

作者: 金声玉振 | 来源:发表于2015-11-16 17:47 被阅读274次

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

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

    相关文章

      网友评论

          本文标题:使用监听器执行定时任务

          本文链接:https://www.haomeiwen.com/subject/hjikhttx.html