我有一个谷歌番石榴缓存,它从数据库加载数据并使用主键缓存它。我最终从数据库创建的对象是不可变的,构建一个对象需要访问多个表。在以下情况下会发生什么:
- 线程 1:调用 cache.load(10) 并根据值为 10 的数据库主键填充缓存
- 线程 2:使用主键 10 更新数据库行,因此它调用 cache.invalidate(10) 在 cache.load(10) 完成之前调用 invalidate。
在 load(x) 执行时调用 invalidate(x) 时 Guava Loading Cache 会做什么?