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–

  1. 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.
  2. 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 a Callable objektum befejezi a call() 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, akkor InterruptedException kivételt dob. Ha a call() metódus kivételt dob, akkor ez a metódus ExecutionException kivé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!!

hasznos volt ez a bejegyzés?

tudassa velünk, ha tetszett a bejegyzés. Csak így tudunk fejlődni.
Igen
Nem