Jak zachowuje się Java Future.get()
w przypadku, gdy po wykonaniu zadania jest wywoływana wiele razy? Czy zwraca ten sam wynik? A może ponownie rzucić ExecutionException
z tym samym wyjątkiem, jeśli obliczenia nie powiodły się? Nie mogę znaleźć niczego w dokumentach na ten temat!Java - Future.get() wielokrotne wywołania
Odpowiedz
Możesz zadzwonić pod numer get()
na Future
tak często, jak chcesz, i to będzie blokować tylko wtedy, gdy zadanie, które doprowadziło do wyniku, jeszcze się nie zakończyło.
Jeśli zadanie zostało już zakończone, natychmiast zwróci wynik zadania.
Jeśli zadanie nie powiodło się z wyjątkiem, wywołanie get()
spowoduje wyświetlenie ExecutionException
przy każdym wywołaniu.
Nie mogę znaleźć niczego w dokumentach na ten temat!
Czy je czytasz? bo kiedy je czytać Dostałem odpowiedź i to jest tutaj ....
V get() throws InterruptedException, ExecutionException
Waits jeśli to konieczne dla obliczenia do wypełnienia, a następnie pobiera swój wynik.
Returns: the computed result Throws: CancellationException - if the computation was cancelled ExecutionException - if the computation threw an exception InterruptedException - if the current thread was interrupted while waiting
Jeśli Obliczanie nie jest zakończona będzie czekać, a jeśli już zakończone zwróci wynik jak najszybciej, bez względu na to ile razy można nazwać
Gdzie czytasz? w https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html#get-- Widzę: Czeka w razie potrzeby, aby zakończyć obliczenia, a następnie pobrać wynik . Bez ostatniej części. Skąd masz te informacje? Nie chcę polegać na nieudokumentowanym zachowaniu, wiem, co się stanie, jeśli spróbuję, ale chciałem dokładnej umowy. –
@MarcoServetto, więc proszę uważnie przeczytać wiersz, będzie czekać, jeśli proces nie zostanie zakończony lub zwróci wynik, Nie jest nigdzie napisane, że wyjątek nadejdzie, jeśli wielokrotnie go wywołasz. "Otrzymuję te informacje, wypróbowując je, i następnie doszedł do wniosku " –
- 1. Styl kodowania Java, zmienne lokalne a wielokrotne wywołania metod
- 2. Dynamiczne wielokrotne Odroczone wywołania jQuery Ajax
- 3. Czy Future.get() jest zamiennikiem Thread.join()?
- 4. Java ORM: Wielokrotne dziedziczenie (interfejs)
- 5. Kotlin używa interfejsu wywołania zwrotnego Java
- 6. niemożliwe zachowanie wywołania metody języka Java
- 7. Czy wielokrotne wywołania do Wymownej właściwości dynamicznej trafią do bazy danych wiele razy?
- 8. Wielokrotne wyrównanie w TextView?
- 9. Wielokrotne żądanie z AFNetworking
- 10. C# Dziedziczenie wielokrotne
- 11. pocztowy wielokrotne sekwencje
- 12. metaklasa wielokrotne dziedziczenie niespójność
- 13. Automatyczne linie wielokrotne QLabel
- 14. Python Wielokrotne dziedziczenie
- 15. Wydajne wielokrotne wstawianie SQL
- 16. Wielokrotne linie podziału lateksu
- 17. Wielokrotne checkboxy ASP.NET MVC
- 18. wielokrotne wybory z datalistą
- 19. Wielokrotne blokady stołów MySQL
- 20. Ogranicz wielokrotne instancje aplikacji
- 21. C# wielokrotne dziedziczenie
- 22. Wielokrotne instrukcje Firebirda
- 23. Postgre wielokrotne dołączenia
- 24. Wielokrotne zapytania PDO
- 25. ZeroClipboard + kątowe, wielokrotne instancje
- 26. Wielokrotne dziedziczenie Pythona: Wybranie, które super() wywołanie
- 27. JSON Funkcja wywołania błędu wywołania
- 28. C++ dziedziczenie wielokrotne zapobiegania diament
- 29. Vim: sort stosując wielokrotne wzory
- 30. Wielokrotne dziedziczenie pająków do scrapy
Sieć [Future] (https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html) klasy docs (i [Future.get] (https://docs.oracle.com/javase/8/docs /api/java/util/concurrent/Future.html#get--)) odpowiadają na większość pytań - musiało to być czytanie czegoś innego. – user2864740
Możesz też spróbować i samemu zobaczyć. –