Vraag Een Java cron-taak maken [dupliceren]


Deze vraag is een exacte kopie van:

Ik schrijf een zelfstandige batch-Java-toepassing om gegevens van YouTube te lezen. Ik wil een cron-taak instellen om elk uur een bepaalde klus te klaren.

Ik heb manieren gezocht en gevonden om een ​​cron-taak uit te voeren voor basisbewerkingen, maar niet voor een Java-toepassing.


28
2018-03-04 05:29


oorsprong


antwoorden:


U kunt TimerTask gebruiken voor 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");
   }

}

Alternatief Je kan ook gebruiken ScheduledExecutorService.


32
2017-09-22 10:28



Eerst zou ik aanraden dat je altijd verwijst docs voordat je iets nieuws begint.

We hebben SchedulerFactory waarmee Job wordt gerangschikt op basis van de Cron-uitdrukking die eraan wordt gegeven.

    //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");
        }

    }

7
2018-03-04 06:17



Als u unix gebruikt, moet u eerst een shellscript schrijven om uw Java-batch als eerste uit te voeren.

Daarna voer je in unix dit commando uit "crontab -e"om het crontab-script te bewerken. Raadpleeg dit artikel voor het configureren van crontab http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/

Sla je crontab-instelling op. Wacht vervolgens tot de komende tijd, het programma wordt automatisch uitgevoerd.


3
2018-03-04 05:37