使用CompletableFuture.supplyAsync 操作ConcurrentHashMap
时间: 2023-11-22 21:48:42 浏览: 209
CompletableFuture.supplyAsync可以用于异步执行任务,ConcurrentHashMap是线程安全的Map,可以在多线程环境下使用。下面是一个使用CompletableFuture.supplyAsync操作ConcurrentHashMap的示例代码:
```
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
CompletableFuture<Void> future = CompletableFuture.supplyAsync(() -> {
map.put("key1", 1);
map.put("key2", 2);
return null;
});
future.join(); // 等待异步任务完成
System.out.println(map.get("key1")); // 输出1
System.out.println(map.get("key2")); // 输出2
```
在这个示例中,我们首先创建了一个ConcurrentHashMap对象,然后使用CompletableFuture.supplyAsync方法异步执行一个任务,该任务会向ConcurrentHashMap中添加两个键值对。最后,我们使用join方法等待异步任务完成,然后输出ConcurrentHashMap中的两个值。
需要注意的是,由于ConcurrentHashMap是线程安全的,因此在多线程环境下可以安全地使用它。但是,在使用CompletableFuture.supplyAsync时,我们需要确保异步任务不会修改ConcurrentHashMap中的值,否则可能会导致线程安全问题。
阅读全文