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