栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Play 2.0.4中每天安排任务+ onStart()?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Play 2.0.4中每天安排任务+ onStart()?

调度程序任务应仅放在Global类中。创建两个任务,仅使用

initialDelay
= 0毫秒首先安排一次。

对于第二项任务,您需要使用通用的日期/时间类来计算当前日期时间与下一个计划的发生时间(即明天的8:00)之间的秒数,然后将此差值

initialDelay
设置
frequency
为24小时。

结果,它将在应用程序启动时启动,并将安排任务在每天的规定时间执行。

编辑

有完整的示例(保存/编辑类:)

/app/Global.java

import akka.util.Duration;import org.joda.time.DateTime;import org.joda.time.Seconds;import play.Application;import play.GlobalSettings;import play.Logger;import play.libs.Akka;import java.util.concurrent.TimeUnit;public class Global extends GlobalSettings {    @Override    public void onStart(Application application) {        Akka.system().scheduler().scheduleonce(     Duration.create(0, TimeUnit.MILLISECONDS),     new Runnable() {         @Override         public void run() {  Logger.info("ON START ---    " + System.currentTimeMillis());         }     }        );        Akka.system().scheduler().schedule(     Duration.create(nextExecutionInSeconds(8, 0), TimeUnit.SECONDS),     Duration.create(24, TimeUnit.HOURS),     new Runnable() {         @Override         public void run() {  Logger.info("EVERY DAY AT 8:00 ---    " + System.currentTimeMillis());         }     }        );    }    public static int nextExecutionInSeconds(int hour, int minute){        return Seconds.secondsBetween(     new DateTime(),     nextExecution(hour, minute)        ).getSeconds();    }    public static DateTime nextExecution(int hour, int minute){        DateTime next = new DateTime()     .withHourOfDay(hour)     .withMinuteOfHour(minute)     .withSecondOfMinute(0)     .withMillisOfSecond(0);        return (next.isBeforeNow())     ? next.plusHours(24)     : next;    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/507178.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号