|
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectcvj2.util.SizeCacheMap<K,V>
public class SizeCacheMap<K,V extends SizeCountable>
キーに対応する値をキャッシュするMap。
オブジェクトのバイトサイズによる容量制限があり、古いデータは自動的に消す。 スレッドセーフに使用できる。 ※) サイズの取得は synchronized の内部で行ってはいけない。 サイズ取得メソッドの中で何らかのロックを取得していると、 別のスレッドが同じロックを取得してから、このクラスのメソッドを呼ぶとデッドロックする。 (よって、サイズ取得は synchronized でない put() メソッドで行ってから synchronized の put() を呼んでいる。) ※2) SizeCountable を使用せずに、put() の引数に size を入れておけば問題なかった。 とりあず、教訓として実装はこのままにしておく。
入れ子のクラスの概要 | |
---|---|
static interface |
SizeCacheMap.RemoveCallback<K,V extends SizeCountable>
削除された時のコールバック |
コンストラクタの概要 | |
---|---|
SizeCacheMap(long limit)
|
|
SizeCacheMap(long limit,
SizeCacheMap.RemoveCallback<K,V> callback,
boolean callbackOnOverwrite)
コンストラクタ |
メソッドの概要 | |
---|---|
void |
clear()
キャッシュクリア |
boolean |
exists(K key)
存在チェック (データの新旧を更新しない) |
V |
get(K key)
データを取得する |
long |
getLimit()
容量制限の取得 |
long |
getTotalBytes()
現在容量の取得 |
void |
put_sync(K key,
V val,
long valSize)
|
void |
put(K key,
V val)
データをキャッシュにセットする |
void |
setLimit(long limit)
容量制限の設定 |
int |
size()
オブジェクト数の取得 |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
---|
public SizeCacheMap(long limit, SizeCacheMap.RemoveCallback<K,V> callback, boolean callbackOnOverwrite)
public SizeCacheMap(long limit)
メソッドの詳細 |
---|
public boolean exists(K key)
public V get(K key)
public void put(K key, V val)
key
- データのキーval
- データpublic void put_sync(K key, V val, long valSize)
public void setLimit(long limit)
public long getLimit()
public long getTotalBytes()
public int size()
public void clear()
|
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |