ExpiringMapの使い方の詳細
ExpiringMapの使い方の詳細 ExpiringMapの使い方の詳細 機能概要 使用説明 詳細 1失効時間と失効プロトコル を設定する.2 Mapの単一要素の有効期限 を設定します. 3 MapのMaximum size を設定する4期限切れリスニングイベント 5怠惰負荷
1.機能紹介
2.使用説明
Githubアドレス
Maven
3.詳細
3.1有効期限と有効期限の設定
実行結果:
期限切れプロトコル:ExpirationPolicy.CREATED.
実行結果:
期限切れにmapを呼び出す.put(),map.replace()更新操作後:
実行結果:
期限切れプロトコル:ExpirationPolicy.ACCESSED.
実行結果:
3.2 Mapの単一要素の有効期限を設定する
実行結果
3.3 MapのMaximum sizeを設定する
実行結果
3.4期限切れのリスニングイベント
実行結果
リスナーの追加/削除を実行することもできます
実行結果
3.5怠惰負荷
怠惰ロードモードを使用すると、mapのputオブジェクトに行かずにgetメソッドを呼び出すときに自動的にオブジェクトを作成できます.
実行結果:
1.機能紹介
1. Map Entry 。
2. Map , Maximum size , Map 。
3. , Entry 。
4. , get() 。
2.使用説明
Githubアドレス
Maven
net.jodah
expiringmap
0.5.8
3.詳細
3.1有効期限と有効期限の設定
/**
*expiration(5000,TimeUnit.MILLISECONDS)
* 5
*ExpirationPolicy.CREATED)
*
*/
ExpiringMap map = ExpiringMap.builder().expiration(5000,TimeUnit.MILLISECONDS)
.expirationPolicy(ExpirationPolicy.CREATED)
.build();
map.put("key","value");
System.out.println("key:"+map.get("key"));
// 5
Thread.sleep(5001);
System.out.println(map.get("key"));
実行結果:
key:value
null
期限切れプロトコル:ExpirationPolicy.CREATED.
/**
* ExpirationPolicy.CREATED: , 。
* ExpirationPolicy.ACCESSED: , 。
*/
ExpiringMap map = ExpiringMap.builder().expiration(5000,TimeUnit.MILLISECONDS)
.expirationPolicy(ExpirationPolicy.CREATED)
.build();
map.put("key","value");
System.out.println(map.get("key"));
Thread.sleep(4000);
System.out.println(" map:"+map.get("key"));
Thread.sleep(1001);
System.out.println(map.get("key"));
実行結果:
value
map:value
null
期限切れにmapを呼び出す.put(),map.replace()更新操作後:
ExpiringMap map = ExpiringMap.builder().expiration(5000,TimeUnit.MILLISECONDS)
.expirationPolicy(ExpirationPolicy.CREATED)
.build();
map.put("key","value");
System.out.println(map.get("key"));
Thread.sleep(4000);
map.put("key","value2");
System.out.println(" map:"+map.get("key"));
Thread.sleep(1001);
System.out.println(map.get("key"));
実行結果:
value
map:value2
value2
期限切れプロトコル:ExpirationPolicy.ACCESSED.
ExpiringMap map = ExpiringMap.builder().expiration(5000,TimeUnit.MILLISECONDS)
.expirationPolicy(ExpirationPolicy.ACCESSED)
.build();
map.put("key","value");
System.out.println(map.get("key"));
Thread.sleep(4000);
System.out.println(" map:"+map.get("key"));
Thread.sleep(1001);
System.out.println(map.get("key"));
実行結果:
value
map:value
value
3.2 Mapの単一要素の有効期限を設定する
ExpiringMap map = ExpiringMap.builder().variableExpiration()
.expirationPolicy(ExpirationPolicy.CREATED)
.build();
map.put("key1","value1",ExpirationPolicy.ACCESSED,5000,TimeUnit.MILLISECONDS);
map.put("key2","value2",10000,TimeUnit.MILLISECONDS);
Thread.sleep(5001);
System.out.println("key1:"+map.get("key1"));
System.out.println("key2:"+map.get("key2"));
Thread.sleep(5000);
System.out.println("key2:"+map.get("key2"));
実行結果
key1:null
key2:value2
key2:null
3.3 MapのMaximum sizeを設定する
//Maximum size 10
Map map = ExpiringMap.builder().maxSize(10)
.build();
// Map 10
for (int i = 0;i<10;i++){
map.put("a:"+i,"v:"+i);
}
System.out.println("a:0 :"+map.get("a:0"));
System.out.println(" a:10 ");
map.put("a:10","v:10");
System.out.println("a:0 :"+map.get("a:0"));
System.out.println("a:1 :"+"a:1");
実行結果
a:0 :v:0
a:10
a:0 :null
a:1 :a:1
3.4期限切れのリスニングイベント
ExpiringMap map = ExpiringMap.builder().variableExpiration()
.expirationListener((thekey, thevalue) -> {
System.out.println("key:"+thekey+" ");
}).build();
map.put("key","value", 5000, TimeUnit.MILLISECONDS);
Thread.sleep(5001);
System.out.println("key:"+map.get("key"));
実行結果
key:key
key:null
リスナーの追加/削除を実行することもできます
ExpiringMap map = ExpiringMap.builder().
variableExpiration().
build();
ExpirationListener expirationListener = ((theKey,theValue)->{
System.out.println(" "+"key:"+theKey+" value:"+theValue);
});
map.put("key","value",ExpirationPolicy.CREATED,5000,TimeUnit.MILLISECONDS);
//
map.addExpirationListener(expirationListener);
Thread.sleep(5001);
//
map.removeExpirationListener(expirationListener);
実行結果
key:key value:value
3.5怠惰負荷
怠惰ロードモードを使用すると、mapのputオブジェクトに行かずにgetメソッドを呼び出すときに自動的にオブジェクトを作成できます.
class Connection {
String ipAddress;
public Connection(String ipAddress) {
this.ipAddress = ipAddress;
}
}
Map map = ExpiringMap.builder()
.expiration(5000, TimeUnit.MILLISECONDS)
.expirationListener((theKey,theValue)->{
System.out.println(" key:"+theKey);
})
.entryLoader(address -> new Connection((String) address))
.build();
System.out.println(map.get("127.0.0.1"));
Thread.sleep(5001);
実行結果:
com.zhizhou.netty.SocketChannelMapTest$1Connection@b1e9b8
key:127.0.0.1