Menerapkan pipeline pemrosesan data asinkron
Anda sedang membangun sebuah dasbor analitik yang perlu mengambil data pengguna dan log aktivitas dari layanan terpisah, lalu memprosesnya untuk membuat ringkasan pengguna. Operasi ini harus dijalankan secara asinkron agar aplikasi tetap responsif. Tugas Anda adalah mengimplementasikannya menggunakan CompletableFuture.
Kelas UserData dan UserSummary telah dimuat sebelumnya untuk Anda.
Latihan ini adalah bagian dari kursus
Optimasi Kode di Java
Petunjuk latihan
- Tambahkan pengambilan data pengguna dalam
CompletableFuture. - Tambahkan pemrosesan data pengguna dalam
CompletableFuture. - Tambahkan penanganan pengecualian dalam
CompletableFuture.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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) {}
}
}