Riješeno: java setinterval ekvivalent

Posljednje ažuriranje: 06/19/2023

setinterval ekvivalent Uvod
U svijetu programiranja, često postoji potreba da se određeni blok koda izvršava uzastopno u određenim vremenskim intervalima. JavaScript ima ugrađenu funkciju pod nazivom `setInterval()` koja služi ovoj svrsi. Međutim, u Javi ne postoji direktan ekvivalent JavaScriptu `setInterval()`. U ovom članku ćemo istražiti rješenje za implementaciju ekvivalenta setInterval u Javi i uroniti u objašnjenja koda korak po korak. Također ćemo razgovarati o relevantnim bibliotekama i funkcijama uključenim u rješavanje ovog problema.

ExecutorService i ScheduledExecutorService

Java pruža ExecutorService i ScheduledExecutorService interfejsa u java.util.concurrent paket, koji se može koristiti za postizanje funkcionalnosti slične JavaScript-ovom `setInterval()`. The ExecutorService se koristi za asinhrono izvršavanje zadataka, dok se ScheduledExecutorService interfejs, koji se proširuje ExecutorService, posebno je dizajniran za izvršavanje zadataka u fiksnim intervalima ili kašnjenjima.

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 klase za kreiranje i rad s planiranim zadacima.

“`java
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
"`

2. Kreirajte instancu ScheduledExecutorService:
Kreirajte novu instancu ScheduledExecutorService koristeći `Executors.newScheduledThreadPool()` s brojem niti kao argumentom. U ovom slučaju koristimo samo jednu nit.

“`java
ScheduledExecutorService planer = Executors.newScheduledThreadPool(1);
"`

3. Definirajte zadatak:
Definišite a Runnable zadatak koji sadrži blok koda koji treba ponavljati. Ovdje samo ispisujemo trenutno vrijeme u milisekundama.

“`java
Zadatak koji se može pokrenuti = () -> {
System.out.println(“Zadatak izvršen u: ” + System.currentTimeMillis());
};
"`

4. Rasporedite zadatak:
Koristite metodu `scheduleAtFixedRate()` koju daje ScheduledExecutorService za planiranje izvršavanja zadatka u fiksnim intervalima. Potrebna su četiri argumenta:
– Zadatak koji treba izvršiti (izvršiti)
– Početno kašnjenje prije prvog izvršenja (dugo)
– Kašnjenje između izvršavanja zadataka (dugo)
– Jedinica vremena za prethodna dva argumenta (TimeUnit)

“`java
scheduler.scheduleAtFixedRate(zadatak, 0, 2, TimeUnit.SECONDS);
"`

U gornjem kodu, zadatak će se izvršiti odmah (sa početnim kašnjenjem od 0) i ponavljati svake 2 sekunde.

Tajmer i TajmerTask

Druga alternativa za postizanje funkcionalnosti `setInterval()` u Javi je korištenje Timer i TimerTask casovi. The Timer class pruža metode za planiranje zadataka za buduće izvršavanje u fiksnim intervalima, dok TimerTask je apstraktna klasa koju biste trebali proširiti da kreirate 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);
    }
}

oba ScheduledExecutorService i Timer korisni su za implementaciju setInterval ekvivalenta. Međutim, općenito se preporučuje korištenje ScheduledExecutorService zbog njegovih dodatnih funkcija i fleksibilnosti, kao što je rukovanje više zadataka ili omogućavanje otkazivanja zadataka.

Slični postovi: