Реалізація асинхронного конвеєра оброблення даних
Ви створюєте аналітичну панель, якій потрібно отримувати дані користувача та журнали активності з окремих сервісів, а потім обробляти їх, щоб сформувати підсумок для користувача. Цю операцію слід виконувати асинхронно, щоб застосунок залишався чутливим. Ваше завдання — реалізувати це за допомогою CompletableFuture.
Класи UserData та UserSummary уже підготовлені для вас.
Ця вправа є частиною курсу
Оптимізація коду в Java
Інструкції до вправи
- Додайте отримання даних користувача у
CompletableFuture. - Додайте оброблення даних користувача у
CompletableFuture. - Додайте оброблення винятків у
CompletableFuture.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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) {}
}
}