Guavaは、Java Parallel Programming Futureに多くの有用な拡張機能を提供します。そのメインインターフェイスは聞き取り可能な将来であり、先物の助けを借りて静的に拡張されます。
将来に継承されたリスニング可能な財布により、コールバック関数を追加して、スレッド操作が完了したときに値を返すか、メソッド実行がすぐに返されます。
聴取可能futureにコールバック関数を追加します:
futures.addcallback(listenablefuture <v>、futurecallback <v>、executor)
FutureCallbackは、OnSuccess(V)とOnFailure(投げ可能)を含むインターフェイスです。
次のように使用:
futures.addcallback(listenablefuture、new futurecallback <object>(){public void onsuccess(object result){system.out.printf( "onsuccess with:%s:s%n"、result);} public void onfailure(Throwable Thrown){System.out.out.Outf() }});同時に、グアバの先物も次のとおりです。
以下は、将来のテストデモです:
@testpublic void should_test_furture()throws exception {ristensexecutorservice service = moreexecutors.listeningdecorator(executors.newfixedthreadpool(10)); ristenableFuture future1 = service.submit(new callable <integer>(){public integer call()throws arturnedexception {thread.sleep(1000); system.out.println( "call future 1."); return 1;}});聞き取り可能なfuture future2 = service.submit(new callable <integer>(){public integer call()throws arturnedexception {thread.sleep(1000); system.out.println( "call future 2."); // throw new runtimeexception( "---- call future 2.");};}); final ristenablefuture allfuture = futures.allaslist(future1、future2); final ristenableFuture Transform = futures.transform(allfutures、new asyncfunction <list <integer>、boolean>(){@override public reshingablefuture apply(list <integer> results)スロー{return futures.immediatefuture(string.format( "suctus future:d"、results.size();); futures.addcallback(transform、new futurecallback <object>(){public void onsuccess(object result){system.out.println(result.getclass()); system.out.printf( "成功thrown.getMessage()); System.out.println(transform.get());}公式情報ホームページ:https://awk.so/@code.google.com!/p/guava-libraries/wiki/listenablefutureexplained
上記は、Guava -Parallel Programming Futuresを整理する情報です。今後も関連情報を追加し続けます。このウェブサイトへのご支援ありがとうございます!