14.4. java.util.concurrent.ConcurrentMap 和 javax.cache.Cache API 的比较


以下是由 java.util.concurrent.ConcurrentMapjavax.cache.Cache API 提供的数据操作 API 的简要比较。

Expand
操作java.util.concurrent.ConcurrentMap<K, V>javax.cache.Cache<K, V>

存储且没有返回

N/A 

void put (K key)

存储并返回以前的值

v put (K key)

v getAndPut (K key)

如果不存在,则存储

V putIfAbsent(K key, V value)

boolean putIfAbsent(K key, V value)

retrieve

v get (Object key)

v get (K key)

如果存在,删除

v remove (Object key)

布尔值删除(K 密钥)

删除并返回前面的值

v remove (Object key)

V getAndRemove(K key)

删除条件

boolean remove (Object key, Object value)

布尔值 remove (K key, V oldValue)

如果存在,替换

v replace (K key, V value)

boolean replace (K key, V value)

替换并返回前面的值

v replace (K key, V value)

V getAndReplace(K key, V value)

替换条件

boolean replace (K key, V oldValue, V newValue)

boolean replace (K key, V oldValue, V newValue)

比较两个 API,很明显地发现,在可能的情况下,JCache 避免返回之前的值,以避免操作执行昂贵的网络或 IO 操作。这是 JCache API 设计中的原则。实际上,在 java.util.concurrent.ConcurrentMap 中存在一组操作,但没有存在于 javax.cache.Cache 中,因为它们可能难以在分布式缓存中计算。唯一例外是迭代缓存的内容:

Expand
操作java.util.concurrent.ConcurrentMap<K, V>javax.cache.Cache<K, V>

计算缓存大小

int size ()

 N/A

返回缓存中的所有密钥

Set<K> keySet()

 N/A

返回缓存中的所有值

collection<V> values ()

 N/A

返回缓存中的所有条目

Set<Map.Entry<K, V>> entrySet()

 N/A

迭代缓存

在 keySet、value 或 entrySet 上使用 iterator () 方法

iterator<Cache.Entry<K, V>> iterator ()

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat