加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 特定时间后停止调度程序

发布时间:2020-12-15 02:19:04 所属栏目:Java 来源:网络整理
导读:我正在尝试在AKKA中创建一个Scheduler. 要求是: – 它将每天凌晨5:00开始 它将在每天晚上10点停止 它将每1小时(频率)执行一次作业. 我找到第3点(频率)的解决方案,但无法找到第1点和第2点的解决方案. system.scheduler().schedule(Duration.create(10,TimeUn
我正在尝试在AKKA中创建一个Scheduler.
要求是: –

>它将每天凌晨5:00开始
>它将在每天晚上10点停止
>它将每1小时(频率)执行一次作业.

我找到第3点(频率)的解决方案,但无法找到第1点和第2点的解决方案.

system.scheduler().schedule(Duration.create(10,TimeUnit.SECONDS),Duration.create(1,TimeUnit.HOURS),actorRef,"Hello",system.dispatcher(),null);

解决方法

// For 5.00 am time period. 

int InHrs = 17;
int InMinutes = 00;

scheduler = Akka.system().scheduler().schedule(Duration.create(nextExecutionInSeconds(InHrs,InMinutes),Duration.create(24,new Runnable() {
                    @Override
                    public void run() {
                        // Call your method
                        System.out.println("EVERY 24:00 Later ---    " + System.currentTimeMillis());   

                    }
                },Akka.system().dispatcher());


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;
    }

重复此操作10 AM时间段,这将是22小时.希望它能解决问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读