Ratkaistu: java setinterval vastaava

Viimeisin päivitys: 06/19/2023
Kirjoittaja: Java SourceTrail

asetusvälin ekvivalentti esittely
Ohjelmoinnin maailmassa on usein tarvetta suorittaa tietty koodilohko toistuvasti tietyin aikavälein. JavaScriptissä on sisäänrakennettu toiminto nimeltä "setInterval()", joka palvelee tätä tarkoitusta. Javassa ei kuitenkaan ole suoraa vastinetta JavaScriptin `setInterval()`:lle. Tässä artikkelissa tutkimme ratkaisua setInterval-vastineen toteuttamiseen Javassa ja sukellamme koodin vaiheittaisiin selityksiin. Keskustelemme myös asiaankuuluvista kirjastoista ja toiminnoista, jotka liittyvät tämän ongelman ratkaisemiseen.

ExecutorService ja ScheduledExecutorService

Java tarjoaa Executor Service ja ScheduledExecutorService liitännät java.util.concurrent paketti, jolla voidaan saavuttaa JavaScriptin `setInterval()` kaltaisia ​​toimintoja. The Executor Service käytetään tehtävien suorittamiseen asynkronisesti, kun taas ScheduledExecutorService käyttöliittymä, joka laajenee Executor Service, on erityisesti suunniteltu tehtävien suorittamiseen kiinteillä aikaväleillä tai viiveillä.

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

Vaiheittainen koodin selitys

1. Tuo vaaditut luokat:
Tuo ensin tarvittavat luokat ajoitettujen tehtävien luomista ja käyttöä varten.

"Java
tuonti java.util.concurrent.Executors;
tuonti java.util.concurrent.ScheduledExecutorService;
tuonti java.util.concurrent.TimeUnit;
”`

2. Luo ScheduledExecutorService-ilmentymä:
Luo uusi esiintymä ScheduledExecutorService käyttämällä "Executors.newScheduledThreadPool()"-funktiota säikeiden lukumäärän argumenttina. Tässä tapauksessa käytämme vain yhtä lankaa.

"Java
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
”`

3. Määrittele tehtävä:
Määrittele a Ajettava tehtävä, joka sisältää toistuvasti suoritettavan koodilohkon. Tässä tulostetaan vain nykyinen aika millisekunteina.

"Java
Suoritettava tehtävä = () -> {
System.out.println("Tehtävä suoritettu: " + System.currentTimeMillis());
};
”`

4. Aikatauluta tehtävä:
Käytä `scheduleAtFixedRate()-menetelmää, jonka tarjoaa ScheduledExecutorService ajoittaa tehtävän suorittamisen määräajoin. Se vaatii neljä argumenttia:
- Suoritettava tehtävä (suoritettava)
– Alkuviive ennen ensimmäistä suoritusta (pitkä)
- Viive tehtävien suorittamisen välillä (pitkä)
– Aikayksikkö kahdelle edelliselle argumentille (TimeUnit)

"Java
scheduler.scheduleAtFixedRate(tehtävä, 0, 2, aikayksikkö.sekuntia);
”`

Yllä olevassa koodissa tehtävä suoritetaan välittömästi (alkuviiveellä 0) ja toistetaan 2 sekunnin välein.

Ajastin ja TimerTask

Toinen vaihtoehto setInterval()-toiminnon saavuttamiseksi Javassa on käyttää Ajastin ja Ajastintehtävä luokat. The Ajastin luokka tarjoaa menetelmiä ajoittaa tehtäviä tulevaa suorittamista varten kiintein väliajoin, kun taas Ajastintehtävä on abstrakti luokka, jota sinun tulee laajentaa luodaksesi vaaditun tehtävän.

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

molemmat ScheduledExecutorService ja Ajastin ovat hyödyllisiä setInterval-vastineen toteuttamisessa. Yleisesti kuitenkin suositellaan sen käyttöä ScheduledExecutorService sen lisäominaisuuksien ja joustavuuden ansiosta, kuten useiden tehtävien käsittely tai tehtävien peruuttaminen.

Related viestiä: