package org.example.testCache;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) throws InterruptedException {
// 5s内没访问,就删除
Cache<Long, Account> accountCache = CacheBuilder.newBuilder()
.maximumSize(1000)
.expireAfterAccess(5, TimeUnit.SECONDS)
.build();
// 插入一个元素
accountCache.put(1L, new Account("jianan", "jianan"));
// 定时访问
while (true) {
TimeUnit.SECONDS.sleep(1);
accountCache.asMap().forEach((k, v) -> {
System.out.println(v);
});
}
}
}
@Getter
@Setter
@AllArgsConstructor
@ToString
class Account {
private String name;
private String password;
}
/*
Account(name=jianan, password=jianan)
Account(name=jianan, password=jianan)
Account(name=jianan, password=jianan)
Account(name=jianan, password=jianan)
*/
可以将Cache当做一个具有超时功能的ConcurrentHashMap使用