All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.hutool.cache.impl.WeakCache Maven / Gradle / Ivy

Go to download

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

There is a newer version: 5.8.34
Show newest version
package cn.hutool.cache.impl;

import cn.hutool.cache.CacheListener;
import cn.hutool.core.lang.Opt;
import cn.hutool.core.lang.mutable.Mutable;
import cn.hutool.core.map.WeakConcurrentMap;

import java.lang.ref.Reference;

/**
 * 弱引用缓存
* 对于一个给定的键,其映射的存在并不阻止垃圾回收器对该键的丢弃,这就使该键成为可终止的,被终止,然后被回收。
* 丢弃某个键时,其条目从映射中有效地移除。
* * @author Looly * * @param 键 * @param 值 * @author looly * @since 3.0.7 */ public class WeakCache extends TimedCache{ private static final long serialVersionUID = 1L; /** * 构造 * @param timeout 超时时常,单位毫秒,-1或0表示无限制 */ public WeakCache(long timeout) { super(timeout, new WeakConcurrentMap<>()); } @Override public WeakCache setListener(CacheListener listener) { super.setListener(listener); final WeakConcurrentMap, CacheObj> map = (WeakConcurrentMap, CacheObj>) this.cacheMap; // WeakKey回收之后,key对应的值已经是null了,因此此处的key也为null map.setPurgeListener((key, value)-> listener.onRemove(Opt.ofNullable(key).map(Reference::get).map(Mutable::get).get(), value.getValue())); return this; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy