11.3. 比较 java.util.concurrent.ConcurrentMap 和 javax.cache.Cache API
以下是 java. util.concurrent.Concurrent.ConcurrentMap 和 javax. cache.Cache API 提供的数据操作 API 的简要比较。
| 操作 | java.util.concurrent.ConcurrentMap<K, V> | javax.cache.Cache<K, V> |
|---|---|---|
| 存储和无返回 | N/A |
|
| 存储和返回上一个值 |
|
|
| 如果不存在,则存储 |
|
|
| retrieve |
|
|
| 如果存在,请删除 |
|
|
| 删除并返回前面的值 |
|
|
| 删除条件 |
|
|
| 替换 if present |
|
|
| 替换并返回前面的值 |
|
|
| 替换条件 |
|
|
比较两个 API 很明显,发现,在可能的情况下,JCache 可以避免返回前面的值,以避免操作昂贵的网络或 IO 操作。这是 JCache API 设计中的覆盖原则。实际上,在 java.util.concurrent.Concurrent.Concurrent.ConcurrentMap 中存在一组操作,但在 javax.cache.Cache 中不存在,因为它们可能会昂贵的分布式缓存中计算。唯一的例外是迭代缓存的内容:
| 操作 | java.util.concurrent.ConcurrentMap<K, V> | javax.cache.Cache<K, V> |
|---|---|---|
| 计算缓存大小 |
| N/A |
| 返回缓存中的所有密钥 |
| N/A |
| 返回缓存中的所有值 |
| N/A |
| 返回缓存中的所有条目 |
| N/A |
| 迭代缓存 |
使用 |
|