Çfarë është kuadri Përmbarues në Java?

The Executor Framework has been introduced in Java 1.5 and it is a part of java.util.concurrent package. The Executor framework is an abstraction over the actual implementation of java multithreading. It is used for standardizing invocation, scheduling, execution and control of asynchronous tasks according to a set of execution policies defined during the creation of the constructor.

Before java 1.5, multithreading applications were created using thread group , thread pool or custom thread pool. Now the control of each thread has to be done by the programmer keeping in mind the following points
● Synchronization
● Locking
● Notification
● Dead lock
And many more that arises out of the application requirement. Disa herë ajo është shumë e vështirë për të kontrolluar aplikacionet Multithreading sepse sjelljet e temat janë gjithashtu të varur në mjedisin ku kërkesa zbarkuar dhe drejtimin. Për shembull shpejtësi procesor, madhësia RAM, gjerësia band të gjithë ka një efekt të drejtpërdrejtë në zbatimin Multithreading. Kështu që ju duhet të mbani të gjithë këta faktorë në mendje para se të krijimit të arkitekturës.
Një kornizë Përmbarues ofron multi-fillesë programet e aplikimit me një abstraksion të lehtë për të menduar në lidhje me detyrat e. Në vend të të menduarit në aspektin e temat, një kërkesë tani merret vetëm me raste të runnable (e cila është në thelb koleksionet e detyrave). Dhe pastaj është kaluar në një ekzekutues të procesit. Ndërfaqja ExecutorService shtrihet ndërfaqe të thjeshtë ekzekutues dhe ka disa metoda të ciklit të jetës për të menaxhuar kuadrin zbatuesi.
Korniza Përmbarues përfaqëson detyra duke përdorur raste të runnable ose kërkueshëm. Drejtuar runnable-së () metodë nuk kthehet një vlerë ose hedhin një përjashtim kontrolluar. Kërkueshëm është një version më funksionale në atë zonë. Ai përcakton një telefonatë () metodë që lejon kthimin e disa vlera llogaritur cilat mund të përdoren në përpunimin e ardhshme. Dhe ajo gjithashtu hedh një përjashtim nëse është e nevojshme.
Klasa FutureTask është përdorur për të marrë informacion të ardhmen në lidhje me përpunimin. Një shembull i kësaj klase mund të përfundojë ose një kërkueshëm ose një runnable. Ju mund të merrni një shembull i kësaj si vlera e kthimit të paraqesë () Metoda e një ExecutorService. Ju gjithashtu mund të dorë të përfundojë detyrën tuaj në një FutureTask para duke e quajtur të ekzekutuar () metodë.
Në vijim janë hapat funksion të zbatimit të ThreadPoolExecutor.
● Një pishinë e shumëfishtë / fije të vetme është krijuar.
● Një radhë është krijuar mban të gjitha detyrat, por këto detyra nuk janë caktuar ende për temat nga pishinë. Kufizohet dhe radhët e gjata pakufizuar janë në dispozicion.
● mbajtës Refuzimi është përdorur për të trajtuar situatën kur një ose më shumë detyra nuk janë në gjendje të caktojë në radhë. Sa i përket politikës së refuzimin e parazgjedhur, ajo thjesht do të hedhin një përjashtim RejectedExecutionException runtime, dhe aplikimi mund ta arrijë atë, ose hidhni atë.

Në vijim është një shembull për të vëzhguar ciklin e jetës së një kornize realizuesi. Këtu do të diskutojë vetëm hapat baza dhe interfaces themelore. Ka shumë më tepër prona dhe nënklasave në dispozicion për të trajtuar llojet e ndryshme të nevojës aplikantit.

Klasa vijim zbaton runnable dhe instanca e saj do të përdoret si një detyrë në pjesën tjetër të kodit.

public class jobPrint implements Runnable {
private final String name;
private final int delay;
public jobPrint(String name, int delay) {
this.name = name;
this.delay = delay;
}
public void run() {
System.out.println("Starting: " + name);
try {
Thread.sleep(delay);
} catch (InterruptedException ignored) {
}
System.out.println("Done with: " + name);
}
}

Klasa vijim po zbaton detyrat ekzekutues.

import java.util.concurrent.*;
import java.util.Random;

publik klasë UseExecutorService {
publike statike kryesore void(String args[]) {
Random random = ri të rastësishme();
ExecutorService zbatuesi = Executors.newFixedThreadPool(3);
// Përmbledhur herë të presim që të dinë kur në mbyllje
int waitTime = 500;
për (int i = 0; unë<10; i ) {
Emri String = “NamePrinter ” + unë;
Ora int = random.nextInt(1000);
waitTime = koha;
Kontrabandist runnable = jobPrint i ri(emër, kohë);
Println(“Shtimi: ” + emër + ” / ” + kohë);
executor.execute(kontrabandist);
}
mundohem {
Thread.sleep(waitTime);
executor.shutdown();
executor.awaitTermination
(waitTime, TimeUnit.MILLISECONDS);
} kap (InterruptedException injorohen) {
}
System.exit(0);
}
}

Krijo një ekzekutues

Së pari të krijojë një shembull të një ekzekutues ose ExecutorService. Klasa Ekzekutorë ka një numër të metodave të fabrikës statike për të krijuar një ExecutorService. For example, newFixedThreadPool() kthen një shembull ThreadPoolExecutor me një radhë nisur dhe pakufizuar dhe një numër të caktuar të temat. Dhe newCachedThreadPool () kthen një shembull ThreadPoolExecutor initialized me një radhë pakufizuar dhe numri i pakufizuar temat. Në rastin e 2, temat ekzistuese janë të ripërdoren nëse available.If fije jo falas është në dispozicion, një të ri është krijuar dhe shtuar në pishinë. Temat që kanë qenë të papunë për më shumë se një periudhë timeout do të hiqet automatikisht nga pishinë.
Kjo është një pishinë të caktuar të 15 temat.
statike përmbaruesi privat Përmbarues përfundimtar = Executors.newFixedThreadPool(15);
Kjo është një pishinë kopje fije
exec privat ExecutorService statike = Executors.newCachedThreadPool();
Në vijim është një customized fije pishinë zbatuesi. Vlerat e parametrave të varet nga nevoja e aplikimit. Këtu pishinë thelbi është që ka 5 temat të cilat mund të bëhen njëkohësisht dhe numri maksimal është 10. Radhë është i aftë për të mbajtur 200 tasks. Këtu një pikë duhet të mbahet mend se madhësia pishinë duhet të mbahen në një anë më të lartë për të akomoduar të gjitha detyrat. Afati i papunë Ora është mbajtur si 5 Znj.
statike përmbaruesi privat Përmbarues përfundimtar = ThreadPoolExecutor i ri(5, 10, 50000L, TimeUnit.MILLISECONDS, LinkedBlockingQueue i ri(200));

Krijo një ose më shumë detyrave dhe të vënë në radhë

Krijo një ose më shumë detyra të kryhen si raste të ose runnable ose kërkueshëm.

Submit detyrën e Përmbarimit

Pas krijimit të ExecutorService, ju duhet të paraqesë një detyrë për të duke përdorur ose të paraqesë () ose të ekzekutuar () metodë. Tani një fije të lirë nga pishinë automatikisht do të marrë detyrat nga radhë dhe ekzekutuar atë. Tani proces do të vazhdojë derisa të gjitha detyrat janë kryer nga radhë.

Ekzekutojë detyrën

Tani zbatuesja është përgjegjës për menaxhimin e ekzekutimit të Task-së, pishinë fije dhe radhë. Nëse pishinë ka më pak se numri i saj konfiguruar e temat minimale, tema të reja do të krijohen për të trajtuar detyrat në radhë derisa të arrihet ai kufi me vlerën konfiguruar. Nëse numri është më i lartë se minimumi konfiguruar, atëherë pishinë nuk do të fillojë asnjë temat më. Në vend të kësaj, detyra është queued deri në një fije është i lirë deri në procesin e kërkesës. Nëse radhë është e plotë, pastaj një fije e re është nisur për të trajtuar atë.

Shutdown zbatuesja

Përfundimi është ekzekutuar duke u thirrur në mbyllje të saj () metodë. Ju mund të zgjidhni për të përfunduar atë gracefully, ose befas.

Një mendonin mbi "Çfarë është kuadri Përmbarues në Java?

============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share