Kio estas Executor kadro en java?

La Executor Kadro estis enkondukita en Java 1.5 Kaj ĝi estas parto de java.Util.Samtempa pako. La Executor kadro estas abstraction super la reala efektivigo de java multithreading. Ĝi estas uzita por normiganta alvokadon, Enhorariganta, ekzekuto kaj kontrolo de nesinkronaj taskoj laŭ aro de ekzekutaj politikoj difinita dum la kreo de la constructor.

Antaŭ ol java 1.5, Multithreading aplikoj estis kreita uzanta fadenan grupon , fadena naĝejo aŭ laŭmenda fadena naĝejo. Nun la kontrolo de ĉiu fadeno devas esti farita de la programadisto tenanta en menso la sekvantaj punktoj
● Samtempigo
● Ŝlosiĝanta
● Sciigo
● Mortinta seruro
Kaj multaj pli da kiu elekestiĝas de la aplika postulo. Iu tempo ĝi estas tre malfacila kontroli multithreading aplikoj ĉar la kondutoj de la fadenoj estas ankaŭ dependaj sur la medio kie la apliko estas deplojiĝita kaj kurado. Ekzemple la procesora rapido, La RAMa grandeco, La banda larĝo ĉiuj havas rektan efikon sur la multithreading apliko. Do vi devi teni ĉiuj ĉi tiuj faktoroj en menso antaŭ kreanta arkitekturon.
Executor kadro provizas multi-surfadeniganta aplikajn programojn kun facila abstraction por pensanta pri taskoj. Anstataŭ pensanta en terminoj de fadenoj, Apliko nun traktas simple kun okazoj de Runnable (Kiu estas resume kolektoj de taskoj). Kaj tiam ĝi estas pasita al Executor pretigi. La ExecutorService fasado etendas la simplistic Executor fasadon kaj estas viva ciklo metodoj administri la executor kadro.
La Executor kadro reprezentas taskojn de uzanta okazojn de Runnable aŭ Callable. Runnable‘s kuro () Metodo ne revenas valoron aŭ ĵeti kontrolita escepton. Callable estas pli praktika versio en tiu areo. Ĝi difinas vokon () Metodo kiu permesas la revenon de kelkaj komputita valoron kiu povas esti uzita en estonta pretigo. Kaj ĝi ankaŭ ĵetas escepton se necesa.
La FutureTask klaso estas uzita akiri estontan informon pri la pretigo. Okazo de ĉi tiu klaso povas volvi aŭ Callable aŭ Runnable. Vi povas akiri okazon de tio ĉi kiel la revena valoro de submetiĝi () Metodo de ExecutorService. Vi povas ankaŭ mane volvi vian taskon en FutureTask antaŭ kriado efektivigas () Metodo.
Sekvanta estas la funkciaj paŝoj efektivigi la ThreadPoolExecutor.
● Naĝejo de multobla/ununura fadeno estas kreita.
● Atendovico estas kreita tenanta ĉiuj la taskoj sed ĉi tiuj taskoj ne estas ankoraŭ asignita al fadenoj de la naĝejo. Bounded kaj unbounded atendovicoj estas haveblaj.
● Malakcepta prizorganto estas uzita pritrakti la situacion kiam unu aŭ pli da taskoj ne estas kapablaj asigni en la atendovico. Kiel por la defaŭlta malakcepta politiko, Ĝi simple ĵetos RejectedExecutionException runtime escepton, Kaj la apliko povas kapti ĝin aŭ forĵeti ĝin.

Sekvanta estas ekzemplo observi la vivan ciklon de executor kadro. Ĉi tie ni nur diskutos la bazajn paŝojn kaj la bazajn fasadojn. Estas multaj pli da nemoveblaĵoj kaj subklasoj havebla pritrakti malsaman specon de kandidata bezono.

La sekvanta klaso efektivigas Runnable kaj ĝiaj okazoj estos uzita kiel tasko en la sekvanta sekcio de kodo.

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

La sekvanta klaso estas efektiviganta la executor taskoj.

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

Publika klaso UseExecutorService {
Publika senmova malplena ĉefa(#La?i args[]) {
Hazarda hazarda = nova Hazarda();
ExecutorService executor = Executors.NewFixedThreadPool(3);
// Sumo supre atendas tempojn scii kiam al shutdown
Int waitTime = 500;
Por (Int i=0; I<10; I ) {
Ŝnura nomo = “NamePrinter ” + I;
Int tempo = hazarda.NextInt(1000);
WaitTime = tempo;
Runnable kuristo = nova jobPrint(Nomo, Tempo);
Sistemo.Ekstere.Println(“Aldonanta: ” + Nomo + ” / ” + Tempo);
Executor.Efektivigas(Kuristo);
}
Provo {
Fadeno.Dormo(WaitTime);
Executor.Shutdown();
Executor.AwaitTermination
(WaitTime, TimeUnit.MILLISECONDS);
} Kaptaĵo (InterruptedException ignorita) {
}
Sistemo.Eliro(0);
}
}

Krei executor

Unue krei okazon de Executor aŭ ExecutorService. La Executors klaso havas nombron de senmovaj fabrikaj metodoj krei ExecutorService. Ekzemple, NewFixedThreadPool() Revenas ThreadPoolExecutor okazo kun initialized kaj unbounded atendovico kaj fiksa nombro de fadenoj. Kaj newCachedThreadPool () Revenas ThreadPoolExecutor okazo initialized kun unbounded atendovico kaj unbounded nombro de fadenoj. En la 2a kazo, Ekzistanta fadenojn estas reused se havebla.Se ne libera fadeno estas havebla, nova unu estas kreita kaj aldonis la naĝejon. Fadenoj kiu estis neaktiva por pli longa ol timeout periodo estos forigita aŭtomate de la naĝejo.
Tio ĉi estas fiksa naĝejo de 15 Fadenoj.
Privata senmova finalo Executor executor = Executors.NewFixedThreadPool(15);
Tio ĉi estas cached fadena naĝejo
Privata senmova ExecutorService exec = Executors.NewCachedThreadPool();
Sekvanta estas personigita fadenan naĝejon executor. La parametraj valoroj dependas al la aplika bezono. Ĉi tie la kerna naĝejo estas havanta 5 Fadenoj kiu povas kuri samtempe kaj la maksimuma nombro estas 10. La atendovico estas kapabla teni 200 Taskoj. Ĉi tie unu punkto devus esti memorita ke la naĝeja grandeco devus esti daŭrigita pli altan flankon akomodi ĉiuj taskoj. La neaktiva tempa limo estas tenita kiel 5 Ms.
Privata senmova fina Executor executor = nova ThreadPoolExecutor(5, 10, 50000L, TimeUnit.MILLISECONDS, Nova LinkedBlockingQueue(200));

Krei unu aŭ pli da taskoj kaj metita en la atendovico

Krei unu aŭ pli da taskoj esti elfarita kiel okazoj de ajna Runnable aŭ Callable.

Submetiĝi la taskon al la Executor

Post kiam kreanta la ExecutorService, Vi devas submetiĝi taskon al ĝi de uzanta aŭ submetiĝi () Aŭ efektivigi () Metodo. Nun libera fadeno de la naĝejo aŭtomate prenos la taskojn de la atendovico kaj efektivigi ĝin. Nun la procezo daŭros kasregistrilon ĉiuj la taskoj estas finita de la atendovico.

Efektivigi la taskon

Nun la Executor estas priresponda por administranta la ekzekuton de la tasko, fadena naĝejo kaj atendovico. Se la naĝejo havas malpli ol ĝia formita nombron de minimumaj fadenoj, Novaj fadenoj estos kreita pritrakti vicatendita taskojn ĝis tiu limo estas atingita al la formita valoron. Se la nombro estas pli alta ol la formita minimumon, Tiam la naĝejo ne komencos plu fadenojn. Male, La tasko estas vicatendita ĝis fadeno estas liberigita ĝis procezo la peto. Se la atendovico estas plene, Tiam nova fadeno estas komencita pritrakti ĝin.

Shutdown la Executor

La fino estas efektivigita de alvokanta ĝia shutdown () Metodo. Vi povas elekti fini ĝin gracefully, Aŭ abrupte.

Unu pensis sur ?Kio estas Executor kadro en java?

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share