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


以下是 java. util.concurrent.Concurrent.ConcurrentMap 和 javax. cache.Cache API 提供的数据操作 API 的简要比较。

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

存储和无返回

N/A 

void put(K key)

存储和返回上一个值

v 放置(K 密钥)

V getAndPut(K key)

如果不存在,则存储

v putIfAbsent (K 键,V 值)

布尔值 putIfAbsent (K 键,V 值)

retrieve

v get (Object 键)

v get (K 密钥)

如果存在,请删除

v remove (Object key)

boolean remove(K key)

删除并返回前面的值

v remove (Object key)

V getAndRemove(K key)

删除条件

布尔值 remove (Object 键、Object 值)

boolean remove(K key, V oldValue)

替换 if present

v replace (K key, V value)

布尔值替换(K 键,V 值)

替换并返回前面的值

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.Concurrent.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

迭代缓存

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

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat