I'm writing a standalone batch Java application to read data from YouTube. I want to set up an cron job to do certain job every hour.
I search and found ways to do a cron job for basic operations but not for a Java application.
23 Answers
You can use TimerTask for Cronjobs.
Main.java
public class Main{ public static void main(String[] args){ Timer t = new Timer(); MyTask mTask = new MyTask(); // This task is scheduled to run every 10 seconds t.scheduleAtFixedRate(mTask, 0, 10000); } } MyTask.java
class MyTask extends TimerTask{ public MyTask(){ //Some stuffs } @Override public void run() { System.out.println("Hi see you after 10 seconds"); } } Alternative You can also use ScheduledExecutorService.
1First I would recommend you always refer docs before you start a new thing.
We have SchedulerFactory which schedules Job based on the Cron Expression given to it.
//Create instance of factory SchedulerFactory schedulerFactory=new StdSchedulerFactory(); //Get schedular Scheduler scheduler= schedulerFactory.getScheduler(); //Create JobDetail object specifying which Job you want to execute JobDetail jobDetail=new JobDetail("myJobClass","myJob1",MyJob.class); //Associate Trigger to the Job CronTrigger trigger=new CronTrigger("cronTrigger","myJob1","0 0/1 * * * ?"); //Pass JobDetail and trigger dependencies to schedular scheduler.scheduleJob(jobDetail,trigger); //Start schedular scheduler.start(); MyJob.class
public class MyJob implements Job{ @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { System.out.println("My Logic"); } } 1If you are using unix, you need to write a shellscript to run you java batch first.
After that, in unix, you run this command "crontab -e" to edit crontab script. In order to configure crontab, please refer to this article
Save your crontab setting. Then wait for the time to come, program will run automatically.
4