12.4. java.util.concurrent.ConcurrentMap と javax.cache.Cache APIs の比較
ここでは、java.util.concurrent.ConcurrentMap および javax.cache.Cache API によって提供されるデータ操作 API を簡単に比較します。
| 操作 | java.util.concurrent.ConcurrentMap<K, V> | javax.cache.Cache<K, V> |
|---|---|---|
| 保存して返さない | 該当なし |
|
| 保存して以前の値を返す |
|
|
| 存在しない場合は保存する |
|
|
| 取得 |
|
|
| 存在する場合は削除 |
|
|
| 以前の値を削除して返す |
|
|
| 条件の削除 |
|
|
| 存在する場合は置き換え |
|
|
| 以前の値を置き換えて返す |
|
|
| 条件の置き換え |
|
|
2 つの API を比較すると、可能であれば、JCache が以前の値を返さないようにして、コストのかかるネットワークまたは IO 操作を実行するオペレーションを回避していることがわかります。これは、JCache API の設計における最も重要な原則です。実際、java.util.concurrent.ConcurrentMap には存在するが、分散キャッシュでの計算にコストがかかる可能性があるため、javax.cache.Cache には存在しない一連のオペレーションがあります。唯一の例外は、キャッシュの内容を反復処理することです。
| 操作 | java.util.concurrent.ConcurrentMap<K, V> | javax.cache.Cache<K, V> |
|---|---|---|
| キャッシュのサイズを計算する |
| 該当なし |
| キャッシュのすべてのキーを返す |
| 該当なし |
| キャッシュのすべての値を返す |
| 該当なし |
| キャッシュ内のすべてのエントリーを返す |
| 該当なし |
| キャッシュを繰り返し処理する |
keySet、value、または entrySet で |
|