这篇文章是我在Google Guava上系列文章的续篇,这次涵盖了Guava Cache。 与HashMap或ConcurrentHashMap相比,Guava Cache提供了更大的灵活性和功能,但不像使用EHCache或Memcached那样繁重(就此而言,它很健壮,因为Guava Cache仅在内存中运行)。 Cache接口具有您希望看到的方法,例如“ get”和“ invalidate”。 您找不到的方法是'put',因为Guava Cache是'self-populated',因此将获取或计算在请求时不存在的值,然后将其存储。 这意味着“ get”调用将永远不会返回null。 公平地说,上一声明并非100%准确。 还有另一种方法“ asMap”,将缓存中的条目公开为线程安全映射。 使用'asMap'将导致不执行任何自加载操作,因此,如果不存在该值,则对'get'的调用将返回null(这有什么意思?)。 尽管这是有关Guava Cache的文章,但我将花大量时间谈论CacheLoader和CacheBuilder。 CacheLoader指定如何加载值,并且CacheBuilder用于设置所需的功能并实际构建缓存。
缓存加载器