Sobes.tech
Middle

Kaip veikia Executor Java?

sobes.tech AI

Atsakymas iš AI

Executor — tai Java interfeisas, kuris apibrėžia sutartį užduočių vykdymui siūlų pulte. Vietoj aiškaus siūlų kūrimo kiekvienai užduočiai, jūs perduodate užduotis vykdytojams, kurie valdo siūlų kūrimą, naudojimą ir naikinimą.

Pagrindiniai privalumai:

  • Siūlų valdymas: suteikia vieningą būdą siūlų pulso valdymui, išvengiant rankinio siūlų kūrimo ir sinchronizacijos.
  • Efektyvumas: pakartotinai naudoja esamus siūlus, sumažindamas kūrimo ir naikinimo išlaidas.
  • Našumas: gerina programų našumą ir reagavimą dėl asinchroninio užduočių vykdymo.

Executor turi vieną metodą:

// Atlieka šią komandą būsimame laike.
void execute(Runnable command);

Dažnai naudojami potipiai:

  • ExecutorService: išplečia Executor ir suteikia papildomus metodus valdyti vykdytojo gyvavimo ciklą ir gauti užduočių vykdymo rezultatus (pvz., per Future).
  • ScheduledExecutorService: išplečia ExecutorService ir leidžia vykdyti užduotis su vėlavimu arba pagal grafiką.

Executors klasė teikia gamyklinius metodus įvairių tipų vykdytojams kurti:

// Sukuria siūlų pulą su fiksuotu siūlų skaičiumi.
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5);

// Sukuria siūlų pulą, kuris gali dinamiškai reguliuoti siūlų skaičių.
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();

// Sukuria siūlų pulą, kuris gali vykdyti užduotis pagal grafiką.
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(3);

Pavyzdys naudojimui:

// Vykdytojo objektas
ExecutorService executor = Executors.newFixedThreadPool(2);

// Užduotis vykdymui
Runnable task = new Runnable() {
    @Override
    public void run() {
        // Užduoties kodas
        System.out.println("Užduotis vykdoma siūle: " + Thread.currentThread().getName());
    }
};

// Užduoties perdavimas vykdytojui
executor.execute(task);

// Vykdytojo užbaigimas (būtina išlaisvinti išteklius)
executor.shutdown();

Kviečiant execute(), vykdytojas paima užduotį (Runnable) ir perduoda ją vienam iš savo pulų siūlų vykdymui. Užduočių paskirstymą ir jų gyvavimo ciklą valdo vykdytojas.