English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
غوافا يقدم العديد من التوسعات المفيدة لبرمجة Future في Java الموجهة للعمل المتوازي، وواجهته الرئيسية هي ListenableFuture، ويستفيد من التوسعات الثابتة لـ Futures.
继承至Future的ListenableFuture,允许我们添加回调函数在线程运算完成时返回值或者方法执行完成立即返回。
对ListenableFuture添加回调函数:
Futures.addCallback(ListenableFuture<V>, FutureCallback<V>, Executor)
其中 FutureCallback是一个包含onSuccess(V),onFailure(Throwable)的接口。
使用如:
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()); } });
同时Guava中Futures对于Future扩展还有:
هذا هو دليل اختبار المستقبل:}}
@Test public void should_test_furture() throws Exception { ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10)); ListenableFuture future1 = service.submit(new Callable<Integer>() { public Integer call() throws InterruptedException { Thread.sleep(1000); System.out.println("استدعاء المستقبل 1."); return 1; } }); ListenableFuture future2 = service.submit(new Callable<Integer>() { public Integer call() throws InterruptedException { Thread.sleep(1000); System.out.println("استدعاء المستقبل 2."); // throw new RuntimeException("----استدعاء المستقبل 2."); return 2; } }); final ListenableFuture allFutures = Futures.allAsList(future1, future2); final ListenableFuture transform = Futures.transform(allFutures, new AsyncFunction<List<Integer>, Boolean>() { @Override public ListenableFuture apply(List<Integer> results) throws Exception { return Futures.immediateFuture(String.format("نجاح المستقبل:%d", results.size())); } }); Futures.addCallback(transform, new FutureCallback<Object>() { public void onSuccess(Object result) { System.out.println(result.getClass()); System.out.printf("success with: %s%n", result); } public void onFailure(Throwable thrown) { System.out.printf("onFailure%s%n", thrown.getMessage()); } }); System.out.println(transform.get()); }
صفحة المعلومات الرسمية:https://awk.so/@code.google.com!/p/guava-libraries/wiki/ListenableFutureExplained
هذا هو جمع المعلومات حول Guava - برمجة متوازية Futures، وسنواصل إضافة المعلومات ذات الصلة شكرًا لكم على دعمكم لهذا الموقع!
البيان: محتويات هذا المقال تم جمعها من الإنترنت، وتنتمي لصاحب الحقوق الأصلي، تم إضافة المحتوى من قبل مستخدمي الإنترنت بشكل تلقائي، ولا يمتلك هذا الموقع حقوق الملكية، لم يتم تعديل المحتوى بشكل يدوي، ولا يتحمل هذا الموقع أي مسؤولية قانونية متعلقة بذلك. إذا كنت قد وجدت محتوى يشتبه في انتهاك حقوق النسخ، فنرجو منك إرسال بريد إلكتروني إلى notice#oldtoolbag.com (يرجى استبدال # ب @ عند إرسال البريد الإلكتروني) لتقديم الشكوى، وقدم الأدلة ذات الصلة، وسيتم حذف المحتوى المزعوم عن الفساد على الفور إذا تم التحقق من صحة الشكوى.