Rijeลกeno: java setinterval ekvivalent

setinterval ekvivalent Uvod
U svijetu programiranja ฤesto postoji potreba za izvoฤ‘enjem odreฤ‘enog bloka koda opetovano u odreฤ‘enim vremenskim intervalima. JavaScript ima ugraฤ‘enu funkciju pod nazivom `setInterval()` koja sluลพi u tu svrhu. Meฤ‘utim, u Javi ne postoji izravni ekvivalent JavaScript `setInterval()`. U ovom ฤ‡emo ฤlanku istraลพiti rjeลกenje za implementaciju ekvivalenta setInterval u Javi i zaroniti u objaลกnjenja koda korak po korak. Takoฤ‘er ฤ‡emo raspravljati o relevantnim knjiลพnicama i funkcijama ukljuฤenim u rjeลกavanje ovog problema.

ExecutorService i ScheduledExecutorService

Java pruลพa Izvrลกiteljska sluลพba i ScheduledExecutorService suฤelja u java.util.concurrent paket, koji se moลพe koristiti za postizanje funkcionalnosti sliฤne JavaScriptovom `setInterval()`. The Izvrลกiteljska sluลพba koristi se za asinkrono izvrลกavanje zadataka, dok ScheduledExecutorService suฤelje, koje se proteลพe Izvrลกiteljska sluลพba, posebno je dizajniran za izvrลกavanje zadataka u fiksnim intervalima ili odgodama.

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class SetIntervalEquivalent {
    public static void main(String[] args) {
        ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

        Runnable task = () -> {
            System.out.println("Task executed at: " + System.currentTimeMillis());
        };

        scheduler.scheduleAtFixedRate(task, 0, 2, TimeUnit.SECONDS);
    }
}

Korak po korak objaลกnjenje koda

1. Uvezite potrebne klase:
Prvo uvezite potrebne razrede za izradu planiranih zadataka i rad s njima.

โ€œ`java
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
"`

2. Stvorite instancu ScheduledExecutorService:
Stvorite novu instancu ScheduledExecutorService koristeฤ‡i `Executors.newScheduledThreadPool()` s brojem niti kao argumentom. U ovom sluฤaju koristimo samo jednu nit.

โ€œ`java
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
"`

3. Definirajte zadatak:
Definirajte a Izvodljivo zadatak koji sadrลพi blok koda koji se ponavlja. Ovdje samo ispisujemo trenutno vrijeme u milisekundama.

โ€œ`java
Zadatak koji se moลพe izvoditi = () -> {
System.out.println(โ€œZadatak izvrลกen u: โ€ + System.currentTimeMillis());
};
"`

4. Zakaลพite zadatak:
Koristite metodu `scheduleAtFixedRate()` koju pruลพa ScheduledExecutorService za raspored izvrลกenja zadatka u fiksnim intervalima. Potrebna su ฤetiri argumenta:
โ€“ Zadatak koji treba izvrลกiti (Runnable)
โ€“ Poฤetna odgoda prije prvog izvrลกenja (dugo)
โ€“ Kaลกnjenje izmeฤ‘u izvrลกenja zadatka (dugo)
โ€“ Jedinica vremena za prethodna dva argumenta (TimeUnit)

โ€œ`java
scheduler.scheduleAtFixedRate(task, 0, 2, TimeUnit.SECONDS);
"`

U gornjem kodu, zadatak ฤ‡e se odmah izvrลกiti (s poฤetnim kaลกnjenjem od 0) i ponoviti svake 2 sekunde.

Timer i TimerTask

Druga alternativa za postizanje funkcionalnosti `setInterval()` u Javi je koriลกtenje Odbrojavanje i Zadatak odbrojavanja klase. The Odbrojavanje klasa pruลพa metode za planiranje zadataka za buduฤ‡e izvrลกavanje u fiksnim intervalima, dok Zadatak odbrojavanja je apstraktna klasa koju biste trebali proลกiriti da biste stvorili traลพeni zadatak.

import java.util.Timer;
import java.util.TimerTask;

public class SetIntervalEquivalentAlternative {
    public static void main(String[] args) {
        Timer timer = new Timer();

        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                System.out.println("Task executed at: " + System.currentTimeMillis());
            }
        };

        timer.scheduleAtFixedRate(task, 0, 2000);
    }
}

Oboje ScheduledExecutorService i Odbrojavanje korisni su za implementaciju ekvivalenta setInterval. Meฤ‘utim, opฤ‡enito se preporuฤuje koriลกtenje ScheduledExecutorService zbog svojih dodatnih znaฤajki i fleksibilnosti, kao ลกto je rukovanje s viลกe zadataka ili dopuลกtanje otkazivanja zadataka.

Povezani postovi:

Ostavite komentar