Java Callable Future Example

en av fordelene Med Java byrder framework er at vi kan kjøre samtidige oppgaver som kan returnere et enkelt resultat etter behandling av oppgavene. Java Samtidighet API oppnår dette med følgende to grensesnitt Callable og Future.

Java Kallbare og Fremtidige grensesnitt

1.1. Callable

Callable grensesnittet har metoden call(). I denne metoden må vi implementere logikken til en oppgave. Callable – grensesnittet er et parameterisert grensesnitt, noe som betyr at vi må angi hvilken type data call() – metoden kommer tilbake.

2.2. Future

Future grensesnittet har metoder for å oppnå resultatet generert av et Callable objekt og å administrere tilstanden.

Java Callable Future Example

i dette eksemplet lager vi en FactorialCalculator som er av typen Callable. Det betyr at vi vil overstyre det er call() metode og etter beregning, vil vi returnere resultatet fra call() metode. Dette resultatet senere kan hentes fra Future referanse holdt av hovedprogrammet.

la Oss nå teste den ovennevnte faktorielle kalkulatoren ved hjelp av to tråder og 4 tall.

programutgang.

her sendte vi et Callable – objekt som skulle utføres i en eksekutor ved hjelp av submit() – metoden. Denne metoden mottar et Callable objekt som en parameter og returnerer et Future objekt som vi kan bruke med to hovedmål–

  1. vi kan kontrollere statusen til oppgaven – vi kan avbryte oppgaven og sjekke om den er ferdig. For dette formålet har vi brukt isDone() – metoden for å sjekke om oppgavene var ferdige.
  2. vi kan få resultatet returnert av call () – metoden. For dette formålet har vi brukt get() – metoden. Denne metoden venter til Callable – objektet er ferdig med utførelsen av call() – metoden og har returnert resultatet.

    hvis tråden avbrytes mens metoden get() venter på resultatet, kaster den et unntak InterruptedException. Hvis metoden call() kaster et unntak, kaster denne metoden et unntak ExecutionException.

grensesnittet Future gir en annen versjon av metoden get(), dvs. get(longtimeout, TimeUnitunit). Denne versjonen av get-metoden, hvis resultatet av oppgaven ikke er tilgjengelig, venter på det for den angitte tiden. Hvis den angitte tidsperioden går og resultatet ikke er tilgjengelig ennå, returnerer metoden en null – verdi.

Glad Læring !!

Var dette innlegget nyttig?

Gi oss beskjed hvis du likte innlegget. Det er den eneste måten vi kan forbedre oss på.
Ja
Nei