Guava предоставляет много полезных расширений для Java Parallel Programming Future, его основным интерфейсом является прослушиваемая функция, и она расширяется статически с помощью будущего.
Слушайный фон унаследован в будущем позволяет нам добавить функцию обратного вызова, чтобы вернуть значение, когда операция потока завершена или выполнение метода возвращается немедленно.
Добавьте функцию обратного вызова к прослушиванию:
Futures.addcallback (слушательфутер <v>, FutureCallback <v>, исполнитель)
Где FutureCallback - это интерфейс, содержащий OnSuccess (v) и Onfailure (броска).
Используется следующим образом:
Futures.AddCallback (слушательфуза, новый FutureCallback <Object> () {public void onSuccess (результат объекта) {System.out.printf ("onsuccess с: %s %n", результат);} public void onfailure (throwable thrown) {system.out.printf ("Onfifulure %s %n", phrown); }});В то же время, фьючерсы в гуаве также имеют:
Ниже приведена тестовая демонстрация для будущего:
@Testpublic void sup_test_furture () бросает exection {histureExeCutorService service = metaRexeCutors.listeningDecorator (executors.newfixedThreadpool (10)); СЛУШАЕТСЯ FUTION1 = Service.Submit (новый Callable <Integer> () {public integer call () бросает прерывание {thread.sleep (1000); System.out.println («Вызовите будущее 1.»); return 1;}}); СЛУШАЕТСЯ FUTION2 = SERVICE.Submit (новый Callable <Integer> () {public integer call () бросает прерывание {thread.sleep (1000); System.out.println («Вызовать будущее 2.»); // Выбросить новое Runtimeexception («---- Call Future 2.»); return 2;}); Final ListenbureFuture AllFuture = Futures.AllasList (Future1, Future2); Окончательный прослушиваемой функции Transform = futures.transform (allfuture, новая асинхфункция <list <Integer>, boolean> () {@override public uliduybuture Применить (список <Integer> Результаты) Отбрасывает исключение {return futures.imediatefuture (string.format ("Успех будущий:%d", результаты. Futures.addcallback (Transform, New FutureCallback <object> () {public void onsuccess (obstec result) {System.out.println (result.getClass ()); System.out.printf («Успех с:%s%n», результат);} public onfailure (Throwable Throwhand.out.out.Printf (on -yempul thrown.getMessage ()); System.out.println (transform.get ());}Официальная информация Домашняя страница: https://awk.so/@code.google.com!/p/guava-libraries/wiki/listenablefutureexplained
Выше приведено информация, разбирая фьючерсы на Guava - параллельное программирование. Мы будем продолжать добавлять соответствующую информацию в будущем. Спасибо за поддержку этого сайта!