From 0f29c6a41a7cbc54fd75cda79e5386698fc9d0e8 Mon Sep 17 00:00:00 2001 From: Kate Kraska Date: Thu, 26 Mar 2026 17:49:04 +0200 Subject: [PATCH] Asynchronous user request processing and caching --- .../mate/academy/AsyncRequestProcessor.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/java/mate/academy/AsyncRequestProcessor.java b/src/main/java/mate/academy/AsyncRequestProcessor.java index ee5eea1..4f4a7e8 100644 --- a/src/main/java/mate/academy/AsyncRequestProcessor.java +++ b/src/main/java/mate/academy/AsyncRequestProcessor.java @@ -1,9 +1,12 @@ package mate.academy; +import java.util.Map; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executor; public class AsyncRequestProcessor { + private final Map cache = new ConcurrentHashMap<>(); private final Executor executor; public AsyncRequestProcessor(Executor executor) { @@ -11,6 +14,20 @@ public AsyncRequestProcessor(Executor executor) { } public CompletableFuture processRequest(String userId) { - return null; + if (cache.containsKey(userId)) { + return CompletableFuture.completedFuture(cache.get(userId)); + } + + return CompletableFuture.supplyAsync(() -> { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + UserData data = new UserData(userId, "Details for " + userId); + cache.put(userId, data); + return data; + }, executor); } }