Middle
Kuidas töötavad Executorid Java-s?
sobes.tech AI
Vastus AI-lt
Executor — see on Java liides, mis määratleb lepingu ülesannete täitmiseks thread poolis. Selle asemel, et iga ülesande jaoks eraldi niiti luua, edastate ülesanded täitjatele, kes haldavad niitide loomist, kasutamist ja hävitamist.
Peamised eelised:
- Niitide haldamine: pakub ühtset viisi thread pooli haldamiseks, vältides käsitsi niitide loomist ja sünkroniseerimist.
- Tõhusus: taaskasutab olemasolevaid niite, vähendades loomise ja hävitamise kulusid.
- Jõudlus: parandab rakenduste jõudlust ja reageerimisvõimet, tehes ülesannete asünkroonset täitmist.
Executor omab ühte meetodit:
// Täidab selle käsu tulevikus.
void execute(Runnable command);
Sageli kasutatakse alamliike:
ExecutorService: laiendabExecutor-it ja pakub täiendavaid meetodeid täitja elutsükli haldamiseks ning täitmise tulemuste saamiseks (näiteksFuturekaudu).ScheduledExecutorService: laiendabExecutorService-i ja võimaldab täita ülesandeid viivitusega või ajakava järgi.
Executors klass pakub tehase meetodeid erinevat tüüpi täitjate loomiseks:
// Loob niidipulga fikseeritud niidide arvuga.
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5);
// Loob niidipulga, mis saab dünaamiliselt niitide arvu reguleerida.
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
// Loob niidipulga, mis saab täita ülesandeid ajakava järgi.
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(3);
Näide kasutamiseks:
// Täitja objekt
ExecutorService executor = Executors.newFixedThreadPool(2);
// Täitmiseks ülesanne
Runnable task = new Runnable() {
@Override
public void run() {
// Ülesande kood
System.out.println("Ülesanne täidetakse niidil: " + Thread.currentThread().getName());
}
};
// Ülesande edastamine täitjale
executor.execute(task);
// Täitja sulgemine (vajalik ressursside vabastamiseks)
executor.shutdown();
execute()-i kutsumisel võtab täitja ülesande (Runnable) ja edastab selle ühe oma puli niidile täitmiseks. Ülesannete jaotamine ning nende elutsükkel on täitja ülesanne.