Java Callable Future eksempel

en af fordelene ved Java-eksekutorrammen er, at vi kan køre samtidige opgaver, der kan returnere et enkelt resultat efter behandling af opgaverne. Java Concurrency API opnår dette med følgende to grænseflader Callable og Future.

Java konverterbare og fremtidige grænseflader

1.1. Konverterbar

Callable interface har call() – metoden. I denne metode er vi nødt til at implementere logikken i en opgave. Callable – grænsefladen er en parameteriseret grænseflade, hvilket betyder, at vi skal angive den type data, som call() – metoden vender tilbage.

2.2. Future

Future interface har metoder til at opnå resultatet genereret af et Callable objekt og til at styre dets tilstand.

Java Callable Future eksempel

i dette eksempel opretter vi en FactorialCalculatorsom er af typen Callable. Det betyder, at vi tilsidesætter det call() metode og efter beregning returnerer vi resultatet fra call() metode. Dette resultat senere kan hentes fra Future reference i hovedprogrammet.

lad os nu teste ovenstående faktorberegner ved hjælp af to tråde og 4 numre.

programudgang.

her sendte vi et Callable objekt, der skal udføres i en eksekutor ved hjælp af submit() – metoden. Denne metode modtager et Callable objekt som en parameter og returnerer et Future objekt, som vi kan bruge med to hovedmål–

  1. vi kan kontrollere status for opgaven-Vi kan annullere opgaven og kontrollere, om den er færdig. Til dette formål har vi brugt isDone() – metoden til at kontrollere, om opgaverne var færdige.
  2. vi kan få resultatet returneret af call () – metoden. Til dette formål har vi brugt get() – metoden. Denne metode venter, indtil Callable – objektet er færdig med udførelsen af call() – metoden og har returneret sit resultat.

    hvis tråden afbrydes, mens get() – metoden venter på resultatet, kaster den en InterruptedException undtagelse. Hvis call() – metoden kaster en undtagelse, kaster denne metode en ExecutionException undtagelse.

grænsefladen Future giver en anden version af metoden get(), dvs.get(longtimeout, TimeUnitunit). Denne version af get-metoden, hvis resultatet af opgaven ikke er tilgængelig, venter på den i den angivne tid. Hvis det angivne tidsrum går, og resultatet endnu ikke er tilgængeligt, returnerer metoden en null værdi.

Glad Læring !!

var dette indlæg nyttigt?

lad os vide, hvis du kunne lide indlægget. Det er den eneste måde, vi kan forbedre.
Ja
Nej