Java Callable Future Example
 a Java executor framework egyik előnye, hogy egyidejű feladatokat futtathatunk, amelyek a feladatok feldolgozása után egyetlen eredményt adhatnak vissza. A Java Concurrency API ezt a következő két interfésszel éri el: Callable és Future. 
Java hívható és jövőbeli interfészek
1.1. Hívható
Callable interfész a call() módszer. Ebben a módszerben egy feladat logikáját kell megvalósítanunk. A Callable interfész egy paraméterezett interfész, ami azt jelenti, hogy meg kell adnunk a call() metódus által visszaadott adatok típusát.
2.2. A Future
Future interfésznek vannak módszerei a Callable objektum által generált eredmény elérésére és állapotának kezelésére.
Java hívható jövőbeli példa
 ebben a példában egy FactorialCalculator – et hozunk létre, amely Callable típusú. Ez azt jelenti, hogy felülírjuk a call() metódust, és a számítás után visszaadjuk az eredményt a call() metódusból. Ezt az eredményt később a főprogram Future hivatkozásából lehet letölteni.
most teszteljük a fenti faktoriális számológépet két szál és 4 szám segítségével.
Program kimenet.
 itt egy Callable objektumot küldtünk végrehajtásra egy végrehajtóban a submit() módszerrel. Ez a módszer egy Callable objektumot kap paraméterként, és egy Future objektumot ad vissza, amelyet két fő célkitűzéssel használhatunk–
-  szabályozhatjuk a feladat állapotát – törölhetjük a feladatot, és ellenőrizhetjük, hogy befejeződött-e. Erre a célra a 
isDone()módszert használtuk annak ellenőrzésére, hogy a feladatok befejeződtek-e. - megkaphatjuk az eredményt a call () módszerrel. Erre a célra a 
get()módszert használtuk. Ez a metódus megvárja, amíg aCallableobjektum befejezi acall()metódus végrehajtását, és visszaadja az eredményét.ha a szál megszakad, miközben a
get()metódus az eredményre vár, akkorInterruptedExceptionkivételt dob. Ha acall()metódus kivételt dob, akkor ez a metódusExecutionExceptionkivételt dob. 
a Future felület a get() metódus egy másik változatát biztosítja,azaz get(longtimeout, TimeUnitunit). A get metódus ezen verziója, ha a feladat eredménye nem érhető el, a megadott ideig várja. Ha a megadott időtartam eltelik, és az eredmény még nem érhető el, a metódus null értéket ad vissza.
Boldog Tanulást!!