You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Caffeine中LoadingCache.get处理高开销操作是否非阻塞?

Caffeine LoadingCache refreshAfterWrite 下 get 方法的行为说明

当你使用 refreshAfterWrite(1, MINUTES) 配置的 LoadingCache,调用 cache.get(k) 时:

  • 如果缓存条目存在但已超过刷新时间(标记为需要刷新),当前调用会立即返回缓存中的旧值,不会阻塞
  • 刷新操作会被提交到后台线程异步执行,新值加载完成后会替换缓存中的旧条目

补充说明

  • refreshAfterWrite 的设计逻辑就是为了避免缓存过期导致的请求阻塞,它不会主动驱逐"过期"的缓存条目,而是在后续访问时触发后台异步刷新,优先保证请求的响应速度
  • 若需强制同步刷新(阻塞当前线程直到新值加载完成),可调用 cache.refresh(k) 方法,该操作会触发同步加载,适合对数据实时性要求极高的场景
  • 与 expireAfterWrite 的区别:后者会直接驱逐过期条目,此时调用 get 会阻塞直到加载器返回新值

内容的提问来源于stack exchange,提问作者SwiftMango

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 09:42:02