Guava menyediakan banyak ekstensi yang berguna untuk pemrograman paralel Java di masa depan, antarmuka utamanya adalah ListenableFuture, dan memperluas secara statis dengan bantuan berjangka.
ListenableFuture yang diwarisi ke masa depan memungkinkan kita untuk menambahkan fungsi panggilan balik untuk mengembalikan nilai ketika operasi utas selesai atau eksekusi metode dikembalikan segera.
Tambahkan fungsi callback ke listenableFuture:
Futures.addcallback (ListenableFuture <V>, FutureCallback <V>, Executor)
Di mana FutureCallback adalah antarmuka yang mengandung OnSuccess (V) dan Onfailure (Throwable).
Digunakan sebagai berikut:
Futures.addCallback(ListenableFuture, new FutureCallback<Object>() { public void onSuccess(Object result) { System.out.printf("onSuccess with: %s%n", result); } public void onFailure(Throwable thrown) { System.out.printf("onFailure %s%n", thrown.getMessage()); }});Pada saat yang sama, Futures in Guava juga memiliki:
Di bawah ini adalah demo tes untuk masa depan:
@Testpublic void seharusnya_test_furture () melempar Exception {listeningExecutorService Service = MoreExecutors.ListeningDecorator (Executors.newfixedThreadPool (10)); ListenableFuture future1 = service.submit (baru dapat dipanggil <integer> () {call public integer () melempar interruptedException {thread.sleep (1000); System.out.println ("Call Future 1."); return 1;}}); ListenableFuture Future2 = service.submit (baru dapat dipanggil <Integer> () {call public integer () melempar interruptedException {thread.sleep (1000); System.out.println ("Call Future 2."); // Lempar RuntimeException baru ("--Call Future 2."); return 2; final listenableFuture allfuture = futures.allaslist (future1, future2); final listenableFuture transform = futures.transform (allfutures, asyncfunction baru <Daftar <Integer>, boolean> () {@Override Public ListenableFuture Apply (Daftar <Integer> Hasil) Lempar Exception {return futures.immediateFuture (string.Format ("Success Future:%d", Hasil Hasil. Futures.addcallback (transform, futureCallback baru <bestigasi> () {public void onSuccess (hasil objek) {System.out.println (result.getClass ()); System.out.printf ("Success with:%s%n", hasil);} public void onfailure Onfailure (Throwable Thrown) {%non. thrown.getMessage ());}}); System.out.println (transform.get ());}Informasi Resmi Homepage: https://awk.so/@code.google.com!/p/guava-libraries/wiki/listenablefutureexplained
Di atas adalah informasi yang menyortir juto pemrograman Juava - Futures paralel. Kami akan terus menambahkan informasi yang relevan di masa mendatang. Terima kasih atas dukungan Anda untuk situs web ini!