当前位置: 首页 > 知识库问答 >
问题:

如何编写cron表达式或设置在Spring只执行一次的计时器?

通啸
2023-03-14

我每天早上都会从后端Spring MVCjava应用程序向Android应用程序发送推送通知。为此,我创建了一个cron作业,并在WebConfig中初始化了一个bean(@EnableScheduling)。这个豆子每天早上都会发送通知。

但是如果用户没有阅读,那么只有我必须在晚上的特定时间发送另一个通知。否则我什么都不该送。如何编写Cron expressen或调度器,或设置计时器,使其在特定时间仅发送一次,仅在当天发送?

共有2个答案

霍建柏
2023-03-14

除了@Jordi Castilla回答,我发现这个代码有助于运行特定任务所需的时间只有一次。调度任务就是指定任务应该执行的时间。例如,下面的代码计划在11:01 P. M.执行任务。

//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, 1);
calendar.set(Calendar.SECOND, 0);
Date time = calendar.getTime();

timer = new Timer();
timer.schedule(new RemindTask(), time);

来源:调度任务就是指定时

亢雅懿
2023-03-14

只启动一次cron进程没有多大意义。。。

模式<代码>0小时分钟** 将为任务编程一小时和一分钟,但每天:

0 0 15-45 * * ?    // will execute task at 15:45

但要实现这一点,请看下面这个答案,它展示了如何使用计时器创建在需要时运行的线程:

private static class MyTimeTask extends TimerTask
{    
    public void run()
    {
        //write your code here
    }
}

public static void main(String[] args) {
    //the Date and time at which you want to execute
    DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = dateFormatter .parse("2012-07-06 13:05:45");

    //Now create the time and schedule it
    Timer timer = new Timer();
    timer.schedule(new MyTimeTask(), date);
}
 类似资料:
  • 我需要开发一个web服务,这将帮助客户机做一些周期性的工作,api将喜欢这个void Dojob(int jobType,string cronExpression);

  • 我有下面的Spring作业每天运行两次,请检查我下面的cron express是否正确,每天触发两次。 我尝试了上面的表达式,但这不起作用。这是怎么回事?

  • 我已经使用testng并行测试用例执行设置,但我只需要执行一次设置方法。 BeforeClass和BeforeMethod也会针对单个线程执行。但我需要在所有线程之前执行一次方法。 如何通过TestNG设置实现这一点? 测试NG。xml

  • 问题内容: 我需要设置一个cron作业,每小时运行一次使用gcc编译的可执行文件。 我以root用户身份登录并输入 然后我输入以下内容并保存文件。 但是,cron作业不起作用。 我看到当我输入文字时会遇到细分错误。我只能从可执行文件所在的文件夹中执行该可执行文件。有什么办法可以解决此问题? 问题答案: 除非有其他需要设置的程序才能运行,否则它应该可以正常工作。

  • 我想基于cron表达式运行一个作业,但它应该在rest调用后从DB中查找cron表达式。 一旦rest api被命中,它应该等待cron表达式,我们可以从数据库或任何方法获得它,然后它应该在指定的时间启动。 它的工作方式与普通的方法调用类似。

  • 问题内容: 如何设置在特定时间仅运行一次文件?替代方法之一是,但并非所有标准托管计划的用户都可以访问。因此,我想知道是否有办法使用? 问题答案: 尝试在2011年3月30日午夜执行命令: 警告 :如评论所述,cron的标准/默认实现不支持 year 列。请参考下面的TomOnTime答案,以了解将来在cron的标准实现中在特定时间运行脚本的正确方法。