Zacznij terazZacznij za darmo

Implementacja asynchronicznego potoku przetwarzania danych

Tworzysz panel analityczny, który musi pobierać dane użytkowników i dzienniki aktywności z osobnych serwisów, a następnie przetwarzać je w celu wygenerowania podsumowania użytkownika. Operacja ta powinna być wykonywana asynchronicznie, aby aplikacja pozostawała responsywna. Twoim zadaniem jest zaimplementowanie tego mechanizmu przy użyciu CompletableFuture.

Klasy UserData i UserSummary zostały wcześniej załadowane.

To ćwiczenie jest częścią kursu

Optymalizacja kodu w Javie

Zobacz kurs

Instrukcje do ćwiczenia

  • Dodaj pobieranie danych użytkownika w CompletableFuture.
  • Dodaj przetwarzanie danych użytkownika w CompletableFuture.
  • Dodaj obsługę wyjątków w CompletableFuture.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

public class AsyncDashboard {
    public static void main(String[] args) throws Exception {        
        CompletableFuture userSummaryFuture = CompletableFuture
            // Fetch the user data
            .____(() -> fetchUserData("user123"))
            
            // Create summary based on fetched data
            .____(userData -> createSummary(userData))
            
            // Add exception handling
            .____(ex -> new UserSummary(new UserData("error", "Error User"))); 
        Thread.sleep(5000);
    }
    
    private static UserData fetchUserData(String userId) {
        simulateNetworkLatency(300);
        return new UserData(userId, "John Doe");
    }
    
    private static UserSummary createSummary(UserData userData) {
        simulateNetworkLatency(200);
        return new UserSummary(userData);
    }
    
    private static void simulateNetworkLatency(int millis) {
        try { Thread.sleep(millis); } catch (InterruptedException e) {}
    }
}
Edytuj i uruchom kod