Uvod
`ScheduledExecutorService` je napredna klasa za periodično planiranje i izvršavanje zadataka na jednoj niti ili skupu niti. Pruža nekoliko praktičnih metoda za rukovanje zadacima, kao što su `schedule`, `scheduleAtFixedRate` i `scheduleWithFixedDelay`. Ove metode omogućavaju programerima da kreiraju niti koje mogu izvršavati zadatke periodično ili nakon određenog kašnjenja.
Rješenje problema
Pretpostavimo da želimo da kreiramo zadatak koji se pokreće nakon čekanja od tri sekunde. To možemo postići korištenjem `ScheduledExecutorService`. Prvo, moramo uvesti potrebne klase iz paketa `java.util.concurrent`.
import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit;
Zatim kreiramo instancu `ScheduledExecutorService` koristeći metodu `Executors.newScheduledThreadPool()`.
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
Sada možemo kreirati zadatak koji se pokreće nakon čekanja od tri sekunde.
Runnable task = () -> System.out.println("Task executed after waiting for 3 seconds."); scheduledExecutorService.schedule(task, 3, TimeUnit.SECONDS);
Obavezno isključite `ScheduledExecutorService` nakon što se zadatak izvrši kako biste izbjegli curenje resursa.
scheduledExecutorService.shutdown();
Korak po korak objašnjenje koda
- Prvo uvezite potrebne klase iz paketa `java.util.concurrent`.
- Kreirajte instancu klase `ScheduledExecutorService` koristeći metodu `Executors.newScheduledThreadPool()`.
- Definirajte zadatak `Runnable` koji će izvesti željenu operaciju.
- Koristite metodu `schedule()` za `ScheduledExecutorService` da postavite kašnjenje za izvršavanje zadatka.
- Isključite `ScheduledExecutorService` nakon što se zadatak izvrši. Ovo je neophodno kako bi se spriječilo curenje resursa.
Povezane biblioteke i funkcije
Selenium WebDriver's ExpectedConditions
Selenium je popularna biblioteka za web automatizaciju za Javu. Selenium WebDriver podržava rukovanje čekanjima koristeći `ExpectedConditions` i čekanja. Oni se mogu koristiti za optimizaciju testnih skripti, čineći ih efikasnijim i efektivnijim.
Štoperica Apache Commons Langa
Apache Commons Lang biblioteka nudi koristan uslužni program poznat kao `Štoperica` koji može mjeriti proteklo vrijeme u Javi. Ovaj uslužni program se može koristiti u scenarijima u kojima je potrebno izvršiti benchmarking ili provjeriti performanse kodnog bloka.
Tajmeri i TimerTasks u Javi
Druga alternativa za kreiranje zakazanih zadataka u Javi je korištenje klasa `Timer` i `TimerTask`. Klasa `Timer` pruža mogućnost za zakazivanje `TimerTask-a` da se izvrši u fiksnom intervalu ili nakon određenog kašnjenja. Iako je malo manje fleksibilan od `ScheduledExecutorService`, služi kao održiva opcija za jednostavne zakazane zadatke u Javi.
U zaključku, čekanje određenog vremena prije izvršavanja dijela koda često je potrebno u mnogim programskim scenarijima. Java pruža razne uslužne programe, kao što su `ScheduledExecutorService`, `Timer` i `TimerTask`, za postizanje ovog zadatka. Razumijevanje njihove upotrebe i načina na koji mogu optimizirati i poboljšati performanse koda je ključno za programere koji rade na vremenski osjetljivim aplikacijama.