Een asynchrone gegevensverwerkingspijplijn implementeren
Je bouwt een analytics-dashboard dat gebruikersgegevens en activiteitslogboeken uit aparte services moet ophalen en die vervolgens moet verwerken tot een gebruikerssamenvatting. Deze bewerking moet asynchroon worden uitgevoerd om je applicatie responsief te houden. Jij krijgt de taak dit te implementeren met CompletableFuture.
De klassen UserData en UserSummary zijn alvast voor je geladen.
Deze oefening maakt deel uit van de cursus
Code optimaliseren in Java
Oefeninstructies
- Voeg het ophalen van gebruikersgegevens toe in de
CompletableFuture. - Voeg het verwerken van gebruikersgegevens toe in de
CompletableFuture. - Voeg foutafhandeling toe in de
CompletableFuture.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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) {}
}
}