ExpiringMap用法详解
功能简介
使用说明
详细介绍
1 设置过期时间与过期协议
2为Map中单个元素设置过期时间
3设置Map的Maximum size
4过期监听事件
5懒加载
1.功能简介
1.可设置Map中的Entry在一段时间后自动过期。
2.可设置Map最大容纳值,当到达Maximum size后,再次插入值会导致Map中的第一个值过期。
3.可添加监听事件,在监听到Entry过期时调度监听函数。
4.可以设置懒加载,在调用get()方法时创建对象。
2.使用说明
Github地址
Maven
<!-- /artifact//expiringmap -->
<dependency>
<groupId></groupId>
<artifactId>expiringmap</artifactId>
<version>0.5.8</version>
</dependency>
3.详细介绍
3.1 设置过期时间与过期协议
/**
*expiration(5000,)
*设置过期时间为5秒
*)
*设置过期策略为创建或更新值后
*/
ExpiringMap<String, String> map = ().expiration(5000,)
.expirationPolicy()
.build();
("key","value");
("key:"+("key"));
//等待5秒
(5001);
(("key"));
执行结果:
key:value
null
过期协议:。
/**
* :在每次更新元素时,过期时间同时清零。
* :在每次访问元素时,过期时间同时清零。
*/
ExpiringMap<String, String> map = ().expiration(5000,)
.expirationPolicy()
.build();
("key","value");
(("key"));
(4000);
("访问map:"+("key"));
(1001);
(("key"));
执行结果:
value
访问map:value
null
在过期时间内调用(),()更新操作后:
ExpiringMap<String, String> map = ().expiration(5000,)
.expirationPolicy()
.build();
("key","value");
(("key"));
(4000);
("key","value2");
("更新map:"+("key"));
(1001);
(("key"));
执行结果:
value
更新map:value2
value2
过期协议:。
ExpiringMap<String, String> map = ().expiration(5000,)
.expirationPolicy()
.build();
("key","value");
(("key"));
(4000);
("访问map:"+("key"));
(1001);
(("key"));
执行结果:
value
访问map:value
value
3.2为Map中单个元素设置过期时间
ExpiringMap<String, String> map = ().variableExpiration()
.expirationPolicy()
.build();
("key1","value1",,5000,);
("key2","value2",10000,);
(5001);
("key1:"+("key1"));
("key2:"+("key2"));
(5000);
("key2:"+("key2"));
执行结果
key1:null
key2:value2
key2:null
3.3设置Map的Maximum size
//Maximum size设置为10个
Map<String, String> map = ().maxSize(10)
.build();
//向Map中插入10个数
for (int i = 0;i<10;i++){
("a:"+i,"v:"+i);
}
("a:0未过期:"+("a:0"));
("插入a:10后");
("a:10","v:10");
("a:0过期:"+("a:0"));
("a:1未过期:"+"a:1");
执行结果
a:0未过期:v:0
插入a:10后
a:0过期:null
a:1未过期:a:1
3.4过期监听事件
ExpiringMap<String,String> map = ().variableExpiration()
.expirationListener((thekey, thevalue) -> {
("key:"+thekey+"过期");
}).build();
("key","value", 5000, );
(5001);
("key:"+("key"));
运行结果
key:key过期
key:null
1
2
也可在运行是添加/删除监听
ExpiringMap<String,String> map = ().
variableExpiration().
build();
ExpirationListener<String,String> expirationListener = ((theKey,theValue)->{
("过期监听事件"+"key:"+theKey+" value:"+theValue);
});
("key","value",,5000,);
//添加监听
(expirationListener);
(5001);
//清除监听
(expirationListener);
运行结果
过期监听事件key:key value:value
1
3.5懒加载
使用懒加载模式时,可以不用去向map中put对象,在调用get方法时自动去创建对象。
class Connection {
String ipAddress;
public Connection(String ipAddress) {
= ipAddress;
}
}
Map<String, Connection> map = ()
.expiration(5000, )
.expirationListener((theKey,theValue)->{
("过期key:"+theKey);
})
.entryLoader(address -> new Connection((String) address))
.build();
(("127.0.0.1"));
(5001);
执行结果:
$1Connection@b1e9b8
过期key:127.0.0.1
---------------------
原文:/Shandows_/article/details/78767211