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–
-  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. -  vi kan få resultatet returneret af call () – metoden. Til dette formål har vi brugt 
get()– metoden. Denne metode venter, indtilCallable– objektet er færdig med udførelsen afcall()– metoden og har returneret sit resultat.hvis tråden afbrydes, mens
get()– metoden venter på resultatet, kaster den enInterruptedExceptionundtagelse. Hviscall()– metoden kaster en undtagelse, kaster denne metode enExecutionExceptionundtagelse. 
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 !!