CodeGym /Kurs /All lectures for NO purposes /Eksekutører: kjørbare objekter

Eksekutører: kjørbare objekter

All lectures for NO purposes
Nivå , Lekse
Tilgjengelig

6.1 Kjørbare objekter

Så vi kom til den største delen av pakken. Den vil beskrive grensesnitt for å kjøre asynkrone oppgaver med muligheten til å oppnå resultater gjennom Future og Callable-grensesnittene, samt tjenester og fabrikker for å lage trådpooler: ThreadPoolExecutor, ScheduledPoolExecutor, ForkJoinPool.

For en bedre forståelse, la oss gjøre en liten dekomponering av grensesnitt og klasser.

6.2 Realiseringer av kjørbare objekter

Future<V>er et fantastisk grensesnitt for å få resultatene av en asynkron operasjon. Nøkkelmetoden her er get-metoden, som blokkerer gjeldende tråd (med eller uten tidsavbrudd) til en asynkron operasjon på en annen tråd er fullført. Det finnes også flere metoder for å avbryte operasjonen og sjekke gjeldende status. FutureTask-klassen brukes ofte som en implementering.

RunnableFuture<V>- hvis Future er et grensesnitt for Client API, er RunnableFuture-grensesnittet allerede brukt til å starte den asynkrone delen. Vellykket fullføring av run()-metoden avslutter den asynkrone operasjonen og lar resultatene hentes via get-metoden.

Callable<V>- En utvidet analog av Runnable-grensesnittet for asynkrone operasjoner. Lar deg returnere en skrevet verdi og kaste et avmerket unntak. Selv om dette grensesnittet ikke har en run()-metode, støtter mange java.util.concurrent-klasser det sammen med Runnable.

FutureTask<V>— implementering av Future/RunnableFuture-grensesnittet. En asynkron operasjon tas som input til en av konstruktørene i form av Runnable eller Callable objekter. Selve FutureTask-klassen er designet for å bli lansert i en arbeidstråd, for eksempel via ny Thread(task).start() eller via ThreadPoolExecutor. Resultatene av en asynkron operasjon hentes via get(...)-metoden.

Delayed- brukes til asynkrone oppgaver som skal starte i fremtiden, samt i DelayQueue. Lar deg stille inn tiden før starten av en asynkron operasjon.

ScheduledFuture<V>- et markørgrensesnitt som kombinerer Future og Delayed-grensesnittene.

RunnableScheduledFuture<V>- et grensesnitt som kombinerer RunnableFuture og ScheduledFuture. I tillegg kan du spesifisere om oppgaven er en engangsoppgave eller skal kjøres med en spesifisert frekvens.

Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION