Caffeine在多线程请求数据时,如果本地缓存未命中,内部是如何处理的?例如五个线程同时请求 id=1 的数据,Caffeine 内部会怎么做?
考察说明
考察Caffeine缓存未命中时的并发控制机制与缓存击穿防护
回答思路
- 说明Caffeine对同一key并发未命中时的合并加载机制
- 解释computeIfAbsent与AsyncCache的原子性保证
- 覆盖缓存击穿防护思想(单飞/请求合并)
- 指出返回的CompletableFuture与阻塞等待的区别
考察Caffeine缓存未命中时的并发控制机制与缓存击穿防护