Apache Common Pool - 通用池组件 evict

zhuakuang0 2020-05-02

在说 evict 之前,我们先看下 池对象的状态定义:

public enum PooledObjectState {
    IDLE,
    ALLOCATED,
    EVICTION,
    EVICTION_RETURN_TO_HEAD,
    VALIDATION,
    VALIDATION_PREALLOCATED,
    VALIDATION_RETURN_TO_HEAD,
    INVALID,
    ABANDONED,
    RETURNING;
}

所谓 evict 就是把池里的对象踢出去,Evictor 类专门负责这个任务,它会调用 evict 方法,这个 evict 方法用 EvictionPolicy 类来做 evict 判断。

evict = evictionPolicy.evict(evictionConfig, underTest, this.idleObjects.size());

相关推荐