java - 每隔 24 小时安排一次

标签 java multithreading

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

最佳答案

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

  1. sleep ():

    TimeUnit.HOURS.sleep(24)
    

    这个做法很简单,干活24小时 sleep 。实际上它有点复杂,因为报告生成需要一些时间,所以你必须睡得稍微短一些。以下所有解决方案都会透明地处理此问题。

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

  3. 中的
  4. @Scheduled 注释或 中的 @Schedule - 更复杂但也更强大,例如接受 表达式:

    @Scheduled(fixedRate=DateUtils.MILLIS_PER_DAY)
    public void generateReport() {
      //...
    }
    
  5. - 成熟的 Java 调度程序,具有集群和故障转移、失火处理、完整 支持等。非常全面:

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

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

关于java - 每隔 24 小时安排一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9618027/

相关文章:

java - Spring上的DBCP和Hibernate不会重新打开死连接,为什么?

java - 使用 WS-Security 签署 SOAP 消息

java - JSP中的登录验证和 session

c++ - std::signal 和 std::raise 线程安全吗?

c++ - boost scoped_lock。这个会锁吗?

c# - 使用事件和 BackgroundWorker 更新导致竞争条件的 UI

java - 从 HttpServletRequest 对象获取发布的 XML

java - HWPF-POI :The table insert into doc with poi hwpf is not visible

java - 对 Java 多线程网络应用程序进行单元测试

c++ - 两个线程的公共(public)资源 - 足够同步了吗?