cod*_*der 5 java caching guava
我是Guava缓存的新手,在阅读文档https://code.google.com/p/guava-libraries/wiki/CachesExplained后我很困惑 .
使用缓存加载器和加载方法之间的区别是使用带有可调用get(K,Callable)的get方法加载密钥(如果缓存中不存在).
对我来说,它们都用于加载密钥的相同目的.无法从the doc doc中找到两者之间的差异.有人可以帮忙吗
a 的主要优点LoadingCache是它促进通过缓存执行计算,而不是经常使用的快速获取然后计算然后放置的方法。它向开发人员传达如何使用缓存。
功能方面 aLoadingCache提供批量加载 ( getAll)、非阻塞刷新和一些简洁性,例如getUnchecked. 刷新可以通过构建阶段显式地执行refresh(key)或隐式地使用。refreshAfterWrite
当计算很复杂时,最好将逻辑移到它自己的类中。通过扩展 aCacheLoader而不是 a Callable,可以更好地传达意图。
性能方面没有太大区别。内部会在每次调用时get(key, callable)创建一个CacheLoader适应 a 的装饰器load,因此会创建一个 eden 空间对象。
在我的 Java 8 重写Caffeine中,有一些额外的选项。AnAsyncLoadingCache提供了类似的 API,但返回一个CompletableFuture. Map如果您需要更直接的控制,则支持新的计算方法作为原子操作。
一般来说,更喜欢使用 a,LoadingCache因为它具有与团队其他成员沟通的特性。其他一切都是肉汁。