当前位置: 首页 > 面试题库 >

安排在24小时间隔

呼延永新
2023-03-14
问题内容

我想知道安排代码的最佳方法。我有一个代码,可以生成报告,并每隔24小时将邮件发送给一组人。它是一个基于控制台的Java应用程序。我想知道最好的安排时间的方法。有时我可能需要将其更改为12小时间隔。但是,应用程序在两次间隔之间不会执行任何其他任务。


问题答案:

这里有几种方法,从最简单到最全面:

  1. sleep()
    TimeUnit.HOURS.sleep(24)
    

这种方法很简单,可以做24小时的工作和睡眠。实际上,这有点复杂,因为报告生成需要一些时间,因此您必须睡得更短。下面的所有解决方案都可以透明地进行处理。

  1. java.util.Timer#scheduleAtFixedRate() -简单的内置Java解决方案。

  2. @Scheduled注释在春季或@Schedule在EJB -更复杂也更强大,如接受的cron表达式

    @Scheduled(fixedRate=DateUtils.MILLIS_PER_DAY)
    

    public void generateReport() {
    //…
    }

  3. quartz-scheduler-具有集群和故障转移,失火处理,全面的cron支持等功能的全面Java调度程序。非常全面:

    newTrigger().
    

    withSchedule(
    simpleSchedule().
    withIntervalInHours(24).
    repeatForever()
    ).build();

要么

    newTrigger().
  withSchedule(
    cronSchedule().
      dailyAtHourAndMinute(17, 30).  //17:30
    ).build();


 类似资料:
  • 问题内容: 当前返回: ‘25:59:59’ 我希望它返回: ‘01:59:59’ 我知道一个简单的问题,但我不知道如何告诉MySQL这样做而不是25小时后返回。有任何想法吗? 问题答案: 不知道这是否是最好的解决方案,但似乎可行:

  • 问题内容: 我有一个将a解析为: 当我解析这个: 结果将是,当使用时: 8月29日 2011 00:44:00 当然,这应该是: 8月29日 2011 12:44:00 当我解析这个: 然后结果如预期的那样: 8月29日 2011 13:44:00 我怎样才能解决这个问题? 问题答案: 使用代替小时模式:

  • 如果我的时间单位为秒,且在86400/20=4320次循环后循环持续时间为20秒,则24小时已过去。 这个问题是否有一个优雅的解决方案,或者我真的必须切换所有类型的大小写?我知道这不会经常发生,但是如果在未来引入新的类型,代码必须适应:) 我也在考虑使用方法,并依赖于返回类型的顺序,通过检查输入单元在其中的位置,知道通过哪个常数(1000L、60L等),我可以自己计算循环数,而无需任何,等方法,但

  • 问题内容: 我现在想在时间戳上添加24小时。如何找到24小时的Unix时间戳号,以便现在可以将其添加到时间戳中? 我还想知道如何将48小时或多天添加到当前时间戳。 我如何才能最好地做到这一点? 问题答案: 您可能需要增加一天而不是24小时。由于夏令时(在其他情况下),并非整天都有24小时:

  • 我得到一个变量字符串,如下所示: 上午8点45分 如果是下午,则希望将其转换为24小时制。这样我就可以放下am/pm,用它来做别的事情。 我可以像这样轻松地放弃am/pm: 当然,如果我这样做,我不知道字符串是am还是pm,所以我不知道在字符串上加上12小时,使它成为24小时。 有人知道我该如何解决这个问题吗?我绝对无法更改我得到的变量输入,它将始终是小时(在 12 小时内)、分钟和 am 或 p

  • 问题内容: 我从服务器获得的时间就像 。 我想将其转换为。 我还希望转换后的时间为24小时格式。任何人都可以解决这个问题。我想得到的输出就像 问题答案: 试试这个: