Java Callable Future Example

yksi Java executor Frameworkin eduista on se, että voimme suorittaa samanaikaisia tehtäviä, jotka voivat palauttaa yhden tuloksen tehtävien käsittelyn jälkeen. Java Concurrency API saavuttaa tämän seuraavilla kahdella liitännällä Callable ja Future.

Java Callable and Future interfaces

1.1. Kutsuttava

Callable liittymässä on call() – menetelmä. Tässä menetelmässä meidän on toteutettava tehtävän logiikka. Callable – rajapinta on parametrisoitu rajapinta, eli on ilmoitettava, minkä tyyppistä dataa call() – menetelmä palaa.

2.2. Future

Future interfacessa on menetelmiä Callable olion tuottaman tuloksen saamiseksi ja sen tilan hallitsemiseksi.

Java Callable Future Example

tässä esimerkissä luodaan FactorialCalculator, joka on tyyppiä Callable. Se tarkoittaa, että ohitamme sen call() – menetelmän ja laskennan jälkeen palautamme tuloksen call() – menetelmästä. Tämän tuloksen voi myöhemmin hakea pääohjelman hallussa olevasta Future referencestä.

kokeillaan nyt yllä olevaa faktorialaskinta kahden kierteen ja 4 numeron avulla.

ohjelman tuotos.

tässä lähetimme Callable objektin toteutettavaksi toimeenpanijassa submit() – menetelmällä. Tämä menetelmä vastaanottaa parametrina Callable objektin ja palauttaa Future objektin, jota voimme käyttää kahdella päätavoitteella–

  1. voimme hallita tehtävän tilaa-voimme peruuttaa tehtävän ja tarkistaa, onko se päättynyt. Tätä varten olemme käyttäneet isDone() – menetelmää tarkistaaksemme, olivatko tehtävät päättyneet.
  2. saamme tuloksen palautettua soittomenetelmällä (). Tähän tarkoitukseen on käytetty get() – menetelmää. Tämä menetelmä odottaa, kunnes Callable Olio on suorittanut call() – menetelmän loppuun ja palauttanut tuloksensa.

    jos säie keskeytyy get() – menetelmän odottaessa tulosta, se heittää InterruptedException poikkeuksen. Jos call() menetelmä heittää poikkeuksen, tämä menetelmä heittää ExecutionException poikkeuksen.

Future – rajapinta tarjoaa toisen version get() – menetelmästä eli get-menetelmästä(longtimeout,TimeUnitunit). Tämä get-menetelmän versio, jos tehtävän tulos ei ole käytettävissä, odottaa sitä määritetyn ajan. Jos määritetty aika kuluu eikä tulosta ole vielä saatavilla, menetelmä palauttaa arvon null.

Onnellista Oppimista !!

oliko tämä viesti hyödyllinen?

kerro, piditkö viestistä. Se on ainoa tapa parantaa.
Kyllä
Ei