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
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.
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.
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