gpt4 book ai didi

caching - 当 load 执行时调用 invalidate 时,google Guava LoadingCache 会做什么?

转载 作者:行者123 更新时间:2023-12-02 16:04:18 36 4
gpt4 key购买 nike

我有一个 Google guava 缓存,它从数据库加载数据并使用主键缓存它。我最终从数据库创建的对象是不可变的,构建对象需要访问多个表。以下场景会发生什么:

  • 线程 1:调用cache.load(10),并根据值为 10 的数据库主键填充缓存
  • 线程2:使用主键10更新数据库行,因此它调用cache.invalidate(10),invalidate在cache.load(10)完成之前被调用。

当 load(x) 执行时调用 invalidate(x) 时,Guava Loading Cache 会做什么?

最佳答案

the Javadoc 中当前指定的那样“在加载完成之前,不会修改与此缓存关联的可观察状态”。加载的语义进一步指定为“加载完成后,使用 Cache.asMap().putIfAbsent 将新加载的值添加到缓存中。”

您还可以阅读the code查看调用 invalidate 或 remove 时忽略加载条目的位置。

关于caching - 当 load 执行时调用 invalidate 时,google Guava LoadingCache 会做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12884232/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com