如何解决在 Java 上使用 Caffeine 在到期时执行操作
我想像这样创建一个缓存
Cache<String,File> cache = caffeine.newBuilder()
.expireAfterWrite(1,TimeUnit.MINUTES)
.maximumSize(100)
.build();
我将用这样的临时文件填充,
File f = File.createTempFile("jobid_",".json");
FileWriter fileWriter = new FileWriter(f);
fileWriter.write("text values 123");
fileWriter.close();
cache.put("jobid",f);
现在 1 分钟后我知道 cache.getIfPresent("jobid")
将返回 null
,我的问题是有什么方法可以在此条目过期时触发另一个任务 - 删除临时文件本身。
任何替代解决方案也都有效。
解决方法
感谢蓬松。
要实现相同的,简单地使用removalListener。
对于我的用例:
Cache<String,File> cache = Caffeine.newBuilder()
.removalListener((String key,File file,RemovalCause cause) -> {
file.delete();
})
.expireAfterWrite(3,TimeUnit.SECONDS)
.maximumSize(100)
.build();
解决问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。