logo

Java Cron izraz

Tehnologija se neprestano mijenja iz dana u dan. Ponekad se od nas traži da povremeno izvršavamo posao na poslužitelju. Ručno pokretanje posla na poslužitelju je težak zadatak pa ga korisnik ili administrator ne može učiniti više puta. Da biste riješili ovaj problem, Cron pomaže programeru da povremeno izvrši posao na poslužitelju. Naširoko se koristi za automatizirano održavanje sustava i divljenje. Osim toga, možemo koristiti i Cron izraz u web razvoju. Postoje mnoge situacije u kojima web-aplikacija povremeno mora izvršiti određeni zadatak.

U ovom odjeljku raspravljat ćemo o Java Cron izrazi , radi i provodi se Java Quartz planer .

Što je Cron?

U osnovi, Cron je uslužni program koji planira zadatak. Omogućuje korisniku periodično planiranje zadatka u određeno vrijeme, datum, mjesec, slabu godinu i godinu. Široko se koristi u automatiziranim procesima gdje nije potrebna ljudska intervencija.

Java Cron izraz

Cron izraz

U Javi se Cron izrazi koriste za konfiguriranje instanci CronTrigger razreda. To je podrazred od org.kvarc.Okidač razreda. Cron izraz je niz ili izraz koji se sastoji od šest ili sedam polja (vremenska jedinica). Opisuje pojedinačne detalje rasporeda i naredbe.

 

Cron izraz može biti jednostavan kao i složen. Na primjer,

Jednostavan: * * * * ? * (zvjezdica označava polja)

java char u string

Kompleks: 0 0/4 12,15,3-35,52 ? Svibanj, lipanj, srpanj UTO-SUB 2002.-2010.

Također imajte na umu da Cron izraz može biti napisan u različitim stilovima, kako slijedi. Na primjer, sljedeća tri Cron izraza imaju isto značenje.

  • 0 10 9 ? * *
  • 0 10 9 * * ?
  • 0 10 9 * * ? *

Sva tri izraza, izvršite u 9:10 ujutro svaki dan.

Polja koja se koriste u Cron izrazu

U Cron izrazima vremenska jedinica je poznata kao polje . Oni su odvojeni razmakom, mogu sadržavati bilo koju od dopuštenih vrijednosti s različitim kombinacijama dopuštenih znakova za to polje. Prikazuje polja očekivanim redoslijedom. Sljedeća tablica prikazuje vremensku jedinicu i odgovarajuće vrijednosti te simbole koji se mogu koristiti s izrazima.

Naziv polja Potreban Dopuštene vrijednosti Dopušteni posebni znakovi i simboli s poljima
sekundi Da 0-59 (prikaz, stručni). , - * /
minuta Da 0-59 (prikaz, stručni). , - * /
Sati Da 0-23 (prikaz, stručni). , - * /
Dan u mjesecu Da -31 , - * ? / D W C
Mjesec Da 0-11 ili SIJEČ-PRO , - * /
Dan u tjednu Da 1-7 ili NED-SUB , - * ? / L C #
Godina Neobavezno prazan ili 1970-2099 , - * /

Posebni simboli i slova koji se koriste u Cron izrazu

Zvjezdica (*): Simbol se koristi kada želimo izvršiti događaj u svakoj vremenskoj jedinici (minuta, sekunda, sat). Na primjer, ako se * koristi s vremenskom jedinicom minuta, to znači da će se događaj automatski izvršavati svake minute.

Upitnik (?): Simbol se koristi u poljima kao što su dan u mjesecu i dan u tjednu. Označava proizvoljnu vrijednost i zanemaruje vrijednost polja. Pretpostavimo da želimo izvršiti skriptu svakog 2. u mjesecu bez obzira na to koji dan u tjednu pada na 2. dan u mjesecu. U ovom slučaju, trebali bismo navesti simbol upitnika ( ?) u polju dana u tjednu.

Crtica (-): Simbol se koristi za određivanje raspona. Određuje raspon vrijednosti. Na primjer, ako je polje sata definirano kao , znači da će se događaj izvršiti u 4. i 5. sat.

Zarez (,): Koristi se za definiranje vrijednosti polja odvojenih zarezom. Na primjer, pet, sub, ned itd.

Kosa crta (/): Koristi se za povećanje vrijednosti navedene vremenske jedinice. Pretpostavimo da želimo započeti događaj na 10 minuta, nakon toga moramo izvršiti isti događaj na 20 minuta, sljedeće izvršenje na 30 minuta, i tako dalje. U ovom slučaju navodimo vrijeme početka i inkrementalnu vrijednost, odvojene kosom crtom.

Na primjer, ako 10/10 u navedenom u polju minuta, to znači da se prvi događaj izvršava u 10 minuta, a sljedeće će izvršenje biti u 20 minuta sata, i tako br.

L (posljednji): Upotreba L ima različito značenje u različitim poljima.

  • Ako je korišten u polje označava posljednji dan u mjesecu, prema kalendaru.
  • Ako je korišten s vrijednošću pomaka kao što je L-5 . Označava 5thdo zadnjeg dana u kalendarskom mjesecu.
  • Ako je korišten u polje, ono označava posljednji dan u tjednu. Također se može koristiti s drugom vrijednošću u polju. Na primjer, 7L označava prošlu subotu .

U: Potonje predstavlja radne dane (od ponedjeljka do petka). Određuje dan u tjednu koji je najbliži navedenom danu u mjesecu.

Na primjer, ako odredimo 5W u polju dana u mjesecu, to znači w odrediti dan u tjednu blizu 5thmjeseca.

  • Ako je 5thmjeseca je subota , događaj će se pokrenuti na 9th mjeseca.
  • Ako je 5thmjeseca je nedjelja , događaj će se pokrenuti na jedanaestth mjeseca.

Možda postoji još jedan slučaj. Pretpostavimo , 1svu mjesecu je subota, događaj će se dogoditi 3rdmjeseca. To znači da se događaj ili skripta neće izvršiti u prethodnom mjesecu.

Hash (#): Predstavlja n-to pojavljivanje radnog dana u mjesecu. Na primjer, treći petak u mjesecu može se označiti kao 6#3 .

Zašto bismo trebali koristiti cron izraze?

Postoje različiti razlozi za korištenje cron izraza. Neki od njih su:

  • Možemo isteći i izbrisati predmemorirane podatkovne datoteke u određenim intervalima.
  • Možemo zakazati dnevne vijesti i e-mailove.
  • Dugotrajne zadatke možemo zakazati za izvođenje iz skripte naredbenog retka, umjesto da ih pokrećemo iz web skripte. Poput kodiranja videozapisa ili masovnog slanja e-pošte.

Primjer Cron izraza

Pogledajmo neke uobičajene Cron izraze koji koriste posebne simbole i polja.

Cron izraz Značenje Cron izraza
0 12 * * ? Označava da će se posao izvršavati u 12:00 (podne) svaki dan.
0/5 13,18 * * ? Označava da će se posao izvršavati svakih pet minuta počevši od 13:00 i završavajući u 13:55, a zatim počevši od 18:00 i završavajući u 18:55, svaki dan.
0-5 13 * * ? Označava da će se posao izvršavati svake minute počevši od 13:00 i završavajući u 13:05, svaki dan.
15,45 13 ? 6 uto Označava da će se posao izvršavati u 13:15 i 13:45 svakog utorka u mjesecu lipnju.
30 9? * PON-PET Označava da će se posao izvršavati u 9:30 ujutro svakog ponedjeljka, utorka, srijede, četvrtka i petka.
30 9 15 * ? Označava da će se posao izvršiti u 9:30 ujutro 15. dana svakog mjeseca.
0 18 L * ? Označava da će se posao izvršiti u 18 sati zadnjeg dana svakog mjeseca.
0 18 L-3 * ? Označava da će se posao izvršiti u 18 sati trećeg do zadnjeg dana u mjesecu.
30 10 ? *5L Označava da će se posao izvršiti u 10:30 zadnjeg četvrtka u mjesecu.
0 10 ? * 23 Označava da će se posao izvršiti u 10 ujutro svakog trećeg ponedjeljka u mjesecu.
0 0 10/5 * ? Označava da će se posao izvršavati u 12 ponoći svaki dan tijekom pet dana počevši od 10. dana u mjesecu.
0 11 11 11 11 ? Označava da će se posao izvršavati svakog 11. studenog u 11:11
0 15 10 ? * 6L 2002-2005 Paliti u 10:15 svakog posljednjeg petka u mjesecu tijekom godina 2002., 2003., 2004. i 2005.
0 0 0 ? * MOJ #1 Označava da će se posao izvršiti prvog ponedjeljka u mjesecu u ponoć.
0 0 0 LW * * Označava da će se posao izvršiti zadnjeg radnog dana u mjesecu u ponoć.
0 0/30 8-10 * * * Označava da će se posao izvršavati u 8:00, 8:30, 9:00, 9:30, 10:00 i 10:30 svaki dan.

Posebna postavka u Cron izrazima

Osim gore navedenog posebnog simbola, Cron izraz također podržava neke unaprijed definirane posebne vrijednosti. Ove vrijednosti se mogu koristiti umjesto polja.

    @godišnje ili @godišnje:Obavlja posao jednom godišnje. Na primjer, '0 0 0 1 1 *' .@mjesečno: Radi jednom mjesečno. Na primjer, '0 0 0 1 * *'. @tjedni: Radi jednom tjedno. Na primjer, '0 0 0 * * 0'. @dnevno ili @ponoć:Radi jednom dnevno. Na primjer, '0 0 0 * * *'. @svaki sat: Posao obavlja svaki sat. Na primjer, '0 0 * * * *'.

Korištenje Cron izraza u Javi

Java nudi sustav za raspoređivanje poslova otvorenog koda koji raspoređuje posao za određenu vremensku jedinicu. Quartz planer možemo preuzeti sa službene stranice.

granica pomoću css-a

U smislu programiranja, posao je klasa koja sadrži zadatak koji treba izvršiti. Ali pitanje je kako to rasporediti. Za raspoređivanje posla definiramo okidač i specificiramo kada će se posao izvršiti.

Ako želimo implementirati Quartz planer, možemo dodati ovisnost, kako slijedi:

 org.quartz-scheduler quartz 2.2.1 

Napomena: Prije izvođenja sljedećeg Java programa, provjerite jeste li dodali kvarc-2.2.1.teglica datoteku na putu, inače ćete dobiti pogrešku.

Pogledajmo implementaciju cron izraza i posla kroz Java program.

Korak 1: Napravite Maven projekt. Stvorili smo s imenom CronExample .

Korak 2: Unutar projekta kreirajte dva paketa naime com.javatpoint.app i com.javatpoint.job . U prvom paketu ćemo definirati glavnu klasu, au drugom paketu ćemo definirati poslove (u našem slučaju broj poslova je pet).

Korak 3: U datoteku pom.xml zalijepite sljedeću ovisnost. Automatski preuzima potrebne JAR datoteke za projekt. Pom datoteka izgleda ovako:

 4.0.0 com.javacodegeeks.snippets.enterprise quartzexample 0.0.1-SNAPSHOT org.quartz-scheduler quartz 2.2.1 

Korak 4: Napravite pet poslova (u paketu com.javatpoint.job) koje želite izvršiti. U našem slučaju definirali smo sljedećih pet poslova.

Posao1.java

 package com.javatpoint.job; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class Job1 implements Job{ public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println('Job1 --->>> Hello user! Time is ' + new Date()); } } 

Posao2.java

 package com.javatpoint.job; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class Job2 implements Job{ public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println('Job2 --->>> Hello user! Time is ' + new Date()); } } 

Posao3.java

 package com.javatpoint.job; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class Job3 implements Job{ public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println('Job3 --->>> Hello user! Time is ' + new Date()); } } 

Posao4.java

 package com.javatpoint.job; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class Job4 implements Job{ public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println('Job4 --->>> Hello user! Time is ' + new Date()); } } 

Posao5.java

 package com.javatpoint.job; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class Job5 implements Job{ public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println('Job5 --->>> Hello user! Time is ' + new Date()); } } 

Korak 5: Stvorite glavnu klasu s imenom MyApp.

MyApp.java

 package com.javatpoint.app; import org.quartz.CronExpression; import org.quartz.CronScheduleBuilder; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; import com.javatpoint.job.Job1; import com.javatpoint.job.Job2; import com.javatpoint.job.Job3; import com.javatpoint.job.Job4; import com.javatpoint.job.Job5; public class MyApp { public static void main(String args[]) { try { JobDetail job1 = JobBuilder.newJob(Job1.class) .withIdentity('job1', 'group1').build(); Trigger trigger1 = TriggerBuilder.newTrigger() .withIdentity('cronTrigger1', 'group1') .withSchedule(CronScheduleBuilder.cronSchedule('0/5 * * * * ?')) .build(); Scheduler scheduler1 = new StdSchedulerFactory().getScheduler(); scheduler1.start(); scheduler1.scheduleJob(job1, trigger1); JobDetail job2 = JobBuilder.newJob(Job2.class) .withIdentity('job2', 'group2').build(); Trigger trigger2 = TriggerBuilder.newTrigger() .withIdentity('cronTrigger2', 'group2') .withSchedule(CronScheduleBuilder.cronSchedule(new CronExpression('0/7 * * * * ?'))) .build(); Scheduler scheduler2 = new StdSchedulerFactory().getScheduler(); scheduler2.start(); scheduler2.scheduleJob(job2, trigger2); JobDetail job3 = JobBuilder.newJob(Job3.class) .withIdentity('job3', 'group3').build(); Trigger trigger3 = TriggerBuilder.newTrigger() .withIdentity('cronTrigger3', 'group3') .withSchedule(CronScheduleBuilder.dailyAtHourAndMinute(13, 46)) .build(); Scheduler scheduler3 = new StdSchedulerFactory().getScheduler(); scheduler3.start(); scheduler3.scheduleJob(job3, trigger3); JobDetail job4 = JobBuilder.newJob(Job4.class) .withIdentity('job4', 'group4').build(); Trigger trigger4 = TriggerBuilder.newTrigger() .withIdentity('cronTrigger4', 'group4') .withSchedule(CronScheduleBuilder.weeklyOnDayAndHourAndMinute(3, 13, 46)) .build(); Scheduler scheduler4 = new StdSchedulerFactory().getScheduler(); scheduler4.start(); scheduler4.scheduleJob(job4, trigger4); JobDetail job5 = JobBuilder.newJob(Job5.class) .withIdentity('job5', 'group5').build(); Trigger trigger5 = TriggerBuilder .newTrigger().withIdentity('cronTrigger5', 'group5') .withSchedule(CronScheduleBuilder.monthlyOnDayAndHourAndMinute(28, 13, 46)) .build(); Scheduler scheduler5 = new StdSchedulerFactory().getScheduler(); scheduler5.start(); scheduler5.scheduleJob(job5, trigger5); Thread.sleep(100000); scheduler1.shutdown(); scheduler2.shutdown(); scheduler3.shutdown(); scheduler4.shutdown(); scheduler5.shutdown(); } catch (Exception e) { e.printStackTrace(); } } } 

Kada završimo sa svim gornjim koracima, direktorij projekta izgleda ovako:

Java Cron izraz

Korak 6: Pokrenite gornji Java program da vidite izlaz.

Java Cron izraz

Promatramo da se svaki posao izvršava u određenom vremenskom intervalu.

if else izjava java