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čiaExecutorir suteikia papildomus metodus valdyti vykdytojo gyvavimo ciklą ir gauti užduočių vykdymo rezultatus (pvz., perFuture).ScheduledExecutorService: išplečiaExecutorServiceir 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.