CodeGym/Kursy Java/Moduł 3/Executory: obiekty wykonywalne

Executory: obiekty wykonywalne

Dostępny

6.1 Obiekty wykonywalne

Dotarliśmy więc do największej części pakietu. Opisane zostaną interfejsy do uruchamiania zadań asynchronicznych z możliwością uzyskiwania wyników poprzez interfejsy Future i Callable, a także usługi i fabryki do tworzenia pul wątków: ThreadPoolExecutor, ScheduledPoolExecutor, ForkJoinPool.

Dla lepszego zrozumienia dokonajmy małej dekompozycji interfejsów i klas.

6.2 Realizacje obiektów wykonywalnych

Future<V>to wspaniały interfejs do uzyskiwania wyników operacji asynchronicznej. Kluczową metodą jest tutaj metoda get, która blokuje bieżący wątek (z limitem czasu lub bez) do czasu zakończenia operacji asynchronicznej w innym wątku. Istnieją również dodatkowe metody anulowania operacji i sprawdzenia aktualnego stanu. Klasa FutureTask jest często używana jako implementacja.

RunnableFuture<V>- jeśli Future jest interfejsem API klienta, to interfejs RunnableFuture jest już używany do uruchamiania części asynchronicznej. Pomyślne zakończenie metody run() kończy operację asynchroniczną i umożliwia pobranie wyników za pomocą metody get.

Callable<V>- Rozszerzony odpowiednik interfejsu Runnable dla operacji asynchronicznych. Umożliwia zwrócenie wpisanej wartości i zgłoszenie sprawdzonego wyjątku. Mimo że ten interfejs nie ma metody run(), wiele klas java.util.concurrent obsługuje ją wraz z Runnable.

FutureTask<V>— wdrożenie interfejsu Future/RunnableFuture. Operacja asynchroniczna jest traktowana jako dane wejściowe do jednego z konstruktorów w postaci obiektów Runnable lub Callable. Sama klasa FutureTask jest zaprojektowana do uruchamiania w wątku roboczym, na przykład za pomocą new Thread(task).start() lub ThreadPoolExecutor. Wyniki operacji asynchronicznej są pobierane za pomocą metody get(...).

Delayed- używany do zadań asynchronicznych, które powinny rozpocząć się w przyszłości, a także w DelayQueue. Umożliwia ustawienie czasu przed rozpoczęciem operacji asynchronicznej.

ScheduledFuture<V>- interfejs znaczników, który łączy interfejsy Future i Delayed.

RunnableScheduledFuture<V>- interfejs łączący RunnableFuture i ScheduledFuture. Dodatkowo możesz określić, czy zadanie jest zadaniem jednorazowym, czy też ma być uruchamiane z określoną częstotliwością.

Komentarze
  • Popularne
  • Najnowsze
  • Najstarsze
Musisz się zalogować, aby dodać komentarz
Ta strona nie ma jeszcze żadnych komentarzy