public class ConcurrentMapCache extends AbstractValueAdaptingCache
java.util.concurrent パッケージに基づく単純な Cache 実装。 通常は SimpleCacheManager と組み合わせて、または ConcurrentMapCacheManager を介して動的にテストまたは単純なキャッシングシナリオに役立ちます。
注意 : ConcurrentHashMap (使用されるデフォルトの実装)では null 値を格納できないため、このクラスはそれらを事前定義された内部オブジェクトに置き換えます。この動作は、ConcurrentMapCache(String, ConcurrentMap, boolean) コンストラクターを介して変更できます。
Cache.ValueRetrievalException, Cache.ValueWrapper| 修飾子 | コンストラクターと説明 |
|---|---|
| ConcurrentMapCache(java.lang.String name) 指定された名前で新しい ConcurrentMapCache を作成します。 |
| ConcurrentMapCache(java.lang.String name, boolean allowNullValues) 指定された名前で新しい ConcurrentMapCache を作成します。 |
| ConcurrentMapCache(java.lang.String name, java.util.concurrent.ConcurrentMap<java.lang.Object,java.lang.Object> store, boolean allowNullValues) 指定された名前と指定された内部 ConcurrentMap を使用して新しい ConcurrentMapCache を作成します。 |
protected | ConcurrentMapCache(java.lang.String name, java.util.concurrent.ConcurrentMap<java.lang.Object,java.lang.Object> store, boolean allowNullValues, SerializationDelegate serialization) 指定された名前と指定された内部 ConcurrentMap を使用して新しい ConcurrentMapCache を作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
void | clear() キャッシュからすべてのマッピングを削除します。 |
void | evict(java.lang.Object key) このキーが存在する場合、このキャッシュからこのキーのマッピングを削除します。 |
protected java.lang.Object | fromStoreValue(java.lang.Object storeValue) 指定された値を内部ストアから get メソッドから返されたユーザー値に変換します( null を適応)。 |
<T> T | get(java.lang.Object key, java.util.concurrent.Callable<T> valueLoader) このキャッシュが指定されたキーをマップする値を返し、必要に応じて valueLoader からその値を取得します。 |
java.lang.String | getName() キャッシュ名を返します。 |
java.util.concurrent.ConcurrentMap<java.lang.Object,java.lang.Object> | getNativeCache() 基になるネイティブキャッシュプロバイダーを返します。 |
boolean | isStoreByValue() このキャッシュに各エントリのコピー( true)または参照(false、デフォルト)のどちらが格納されているかを返します。 |
protected java.lang.Object | lookup(java.lang.Object key) 基になるストアで実際のルックアップを実行します。 |
void | put(java.lang.Object key, java.lang.Object value) 指定された値をこのキャッシュ内の指定されたキーに関連付けます。 |
Cache.ValueWrapper | putIfAbsent(java.lang.Object key, java.lang.Object value) 指定された値が設定されていない場合、指定された値をこのキャッシュ内の指定されたキーと原子的に関連付けます。 |
protected java.lang.Object | toStoreValue(java.lang.Object userValue)put メソッドに渡された指定のユーザー値を内部ストアの値に変換します( null を適応)。 |
get, get, isAllowNullValues, toValueWrapperpublic ConcurrentMapCache(java.lang.String name)
name - キャッシュの名前 public ConcurrentMapCache(java.lang.String name,
boolean allowNullValues)name - キャッシュの名前 allowNullValues - このキャッシュの null 値を受け入れて変換するかどうか public ConcurrentMapCache(java.lang.String name,
java.util.concurrent.ConcurrentMap<java.lang.Object,java.lang.Object> store,
boolean allowNullValues)ConcurrentMap を使用して新しい ConcurrentMapCache を作成します。name - キャッシュの名前 store - 内部ストアとして使用する ConcurrentMapallowNullValues - null 値を許可するかどうか (それらを内部の null ホルダー値に適合させる)protected ConcurrentMapCache(java.lang.String name,
java.util.concurrent.ConcurrentMap<java.lang.Object,java.lang.Object> store,
boolean allowNullValues,
@Nullable
SerializationDelegate serialization)ConcurrentMap を使用して新しい ConcurrentMapCache を作成します。SerializationDelegate が指定されている場合、store-by-value が有効になります name - キャッシュの名前 store - 内部ストアとして使用する ConcurrentMapallowNullValues - null 値を許可するかどうか (それらを内部の null ホルダー値に適合させる)serialization - キャッシュエントリの直列化に使用する SerializationDelegate または参照を格納する null public final boolean isStoreByValue()
true)または参照(false、デフォルト)のどちらが格納されているかを返します。値による保管が有効になっている場合、キャッシュ内の各エントリはシリアライズ可能でなければなりません。public final java.lang.String getName()
Cachepublic final java.util.concurrent.ConcurrentMap<java.lang.Object,java.lang.Object> getNativeCache()
Cache@Nullable protected java.lang.Object lookup(java.lang.Object key)
AbstractValueAdaptingCacheAbstractValueAdaptingCache の lookup key - 関連する値が返されるキー null @Nullable public <T> T get(java.lang.Object key, java.util.concurrent.Callable<T> valueLoader)
CachevalueLoader からその値を取得します。このメソッドは、従来の「キャッシュされている場合は返す、そうでない場合は作成、キャッシュして返す」パターンの単純な代替を提供します。 可能な場合、実装は、同じキーへの同時アクセスの場合に指定された valueLoader が 1 回だけ呼び出されるように、ロード操作が同期されることを確認する必要があります。
valueLoader が例外をスローした場合、Cache.ValueRetrievalException にラップされます
key - 関連する値が返されるキー public void put(java.lang.Object key,
@Nullable
java.lang.Object value)Cacheキャッシュに以前にこのキーのマッピングが含まれていた場合、古い値は指定された値に置き換えられます。
key - 指定された値が関連付けられるキー value - 指定されたキーに関連付けられる値 @Nullable public Cache.ValueWrapper putIfAbsent(java.lang.Object key, @Nullable java.lang.Object value)
Cacheこれは次と同等です:
Object existingValue = cache.get(key);
if (existingValue == null) {
cache.put(key, value);
return null;
} else {
return existingValue;
}
ただし、アクションはアトミックに実行されます。すべての初期状態の CacheManager 実装は、put をアトミックに実行することができるが、オペレーションは、たとえば、非アトミックな方法で、存在のチェックと後続の put との 2 つのステップで実装することもできます。詳細については、使用しているネイティブキャッシュ実装のドキュメントを参照してください。key - 指定された値が関連付けられるキー value - 指定されたキーに関連付けられる値 null 自体の場合もある)をマップする値、またはこの呼び出しの前にキャッシュにそのキーのマッピングが含まれていなかった場合は null したがって、null を返すことは、指定された value がキーに関連付けられていることを示すインジケーターです。public void evict(java.lang.Object key)
Cachekey - マッピングがキャッシュから削除されるキー public void clear()
Cacheprotected java.lang.Object toStoreValue(@Nullable java.lang.Object userValue)
AbstractValueAdaptingCachenull を適応)。AbstractValueAdaptingCache の toStoreValue userValue - 指定されたユーザー値 protected java.lang.Object fromStoreValue(@Nullable java.lang.Object storeValue)
AbstractValueAdaptingCachenull を適応)。AbstractValueAdaptingCache の fromStoreValue storeValue - ストアの値