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 merupakan bagian dari kursus
Optimasi Kode di Java
Instruksi latihan
- Tambahkan pengambilan data pengguna dalam
CompletableFuture. - Tambahkan pemrosesan data pengguna dalam
CompletableFuture. - Tambahkan penanganan pengecualian dalam
CompletableFuture.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
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) {}
}
}