Running a Java method at a set time each day

后端 未结 3 1766
不知归路
不知归路 2020-12-30 02:54

I\'m relatively new to Java and I\'ve pick up a project to work on. However, I\'ve run into a block. I need a method to run at a certain times throughout the day. I\'ve d

相关标签:
3条回答
  • 2020-12-30 03:16

    One possibility could be to use an external scheduler - depending on desired accuracy. On UNIX use CRON, on Windows use the Windows Scheduler. That nicely isolates timing from doing.

    You could use a Timer and create a simple class that checks the time every minute or 5 minutes depending on desired granularity. It would be very lightweight.

    0 讨论(0)
  • 2020-12-30 03:31

    I'd strongly suggest, if at all possible, that the best approach would be to invoke your script or Java application using your OS's scheduler: for example, "cron" in *nix, or "task scheduler" in Windows.

    0 讨论(0)
  • 2020-12-30 03:34

    try the TimerTask class

    for more info check out http://oreilly.com/java/archive/quartz.html

    import java.util.Calendar;
    import java.util.Date;
    import java.util.Timer;
    import java.util.TimerTask;
    
    public class ReportGenerator extends TimerTask {
    
      public void run() {
        System.out.println("Generating report");
        //TODO generate report
      }
    
    }
    
    class MainApplication {
    
      public static void main(String[] args) {
        Timer timer = new Timer();
        Calendar date = Calendar.getInstance();
        date.set(
          Calendar.DAY_OF_WEEK,
          Calendar.SUNDAY
        );
        date.set(Calendar.HOUR, 0);
        date.set(Calendar.MINUTE, 0);
        date.set(Calendar.SECOND, 0);
        date.set(Calendar.MILLISECOND, 0);
        // Schedule to run every Sunday in midnight
        timer.schedule(
          new ReportGenerator(),
          date.getTime(),
          1000 * 60 * 60 * 24 * 7
        );
      }//Main method ends
    }//MainApplication ends
    
    0 讨论(0)
提交回复
热议问题