Implementarea unui pipeline asincron de procesare a datelor
Construiești un dashboard de analiză care trebuie să preia datele utilizatorilor și jurnalele de activitate din servicii separate, apoi să le proceseze pentru a genera un rezumat al utilizatorului. Această operațiune ar trebui realizată asincron, pentru ca aplicația ta să rămână responsivă. Sarcina ta este să implementezi acest lucru folosind CompletableFuture.
Clasele UserData și UserSummary au fost preîncărcate pentru tine.
Acest exercițiu face parte din cursul
Optimizarea codului în Java
Instrucțiuni pentru exercițiu
- Adaugă preluarea datelor utilizatorului în
CompletableFuture. - Adaugă procesarea datelor utilizatorului în
CompletableFuture. - Adaugă gestionarea excepțiilor în
CompletableFuture.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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) {}
}
}