Wpis z mikrobloga

invokeAll() method executes the given list of Callable tasks, returning a list of Future objects holding their status and results when all complete.

no i robie sobie tego invokeAll() i mam z niego tą listę typu Future. Teraz w moim głównym wątku chcę tę listę przejść i coś na niej zrobić. Iteruje sobie po niej i na każdym elemencie wywołam get() i z tego co czytałem to albo wynik już jest i go biorę, albo czekam, dopóki się nie pojawi (jeszcze tam jakieś inne przypadki typu za długi czas, ale to nie ważne). Teraz mam pytanie czy przypadkiem nie zdarzy się opcja, że robie get() i czekam i czekam mimo, że następne elementy już dawno zostały obliczone i na nich bym nie musiał czekać, a tak jednak marnuje czas.
#java #programowanie #naukaprogramowania #programista15k
  • 4
@agsbajahs: marnujesz czas tylko w tym przypadku, jeśli nie robisz żadnej agregacji na wynikach. Jeśli są od siebie niezależne, to możesz dalej je asynchronicznie przetwarzać. Jeśli musisz je zebrać, to i tak poczekasz na najwolniejszy.