gpt4 book ai didi

java - Guava 缓存 : cacheloader vs get(k, 可调用)

转载 作者:搜寻专家 更新时间:2023-10-31 19:54:02 27 4
gpt4 key购买 nike

初学Guava缓存,看了文档一头雾水 https://code.google.com/p/guava-libraries/wiki/CachesExplained .

使用带有加载方法的缓存加载器与使用带有可调用 get(K, Callable) 的 get 方法来加载缓存中不存在的键之间的区别是什么。

对我来说,它们都用于加载 key 的相同目的。无法从 w 文档中找到两者之间的差异。有人可以帮忙吗。

最佳答案

LoadingCache 的主要优点是它促进通过缓存执行计算,而不是通常使用的快速获取然后计算然后放置方法。它向开发人员传达应该如何使用缓存。

在功能方面,LoadingCache 提供批量加载 (getAll)、非阻塞刷新和一些简洁性,例如 getUnchecked。刷新可以通过 refresh(key) 显式执行,也可以在构建阶段使用 refreshAfterWrite 隐式执行。

当计算很复杂时,最好将逻辑移到它自己的类中。通过扩展 CacheLoader 而不是 Callable,它可以更好地传达意图。

在性能方面没有太大区别。 get(key, callable) 在每次调用时在内部创建一个装饰器 CacheLoader 以适应 load,因此创建了一个 eden 空间对象.

在我的 Java 8 重写中,Caffeine , 还有一些额外的选择。 AsyncLoadingCache 提供了类似的 API,但返回的是 CompletableFuture。如果您需要更直接的控制,新的 Map 计算方法支持作为原子操作。

通常更喜欢使用 LoadingCache 来与团队的其他成员进行交流。其他都是肉汁。

关于java - Guava 缓存 : cacheloader vs get(k, 可调用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32283166/

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