Kom igångKom igång gratis

Implementera en asynkron pipeline för databearbetning

Du bygger en analysdashboard som behöver hämta användardata och aktivitetsloggar från separata tjänster och sedan bearbeta dem för att skapa en användarsammanfattning. Den här operationen ska utföras asynkront för att hålla applikationen responsiv. Din uppgift är att implementera detta med CompletableFuture.

Klasserna UserData och UserSummary har laddats in åt dig i förväg.

Den här övningen är en del av kursen

Optimera kod i Java

Visa kurs

Övningsinstruktioner

  • Lägg till hämtning av användardata i CompletableFuture.
  • Lägg till bearbetning av användardata i CompletableFuture.
  • Lägg till undantagshantering i CompletableFuture.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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) {}
    }
}
Redigera och kör kod