模块 wjybxx.base

类 DefaultObjectPool<T>

java.lang.Object
cn.wjybxx.base.pool.DefaultObjectPool<T>
所有已实现的接口:
ObjectPool<T>, Supplier<T>

@NotThreadSafe public final class DefaultObjectPool<T> extends Object implements ObjectPool<T>
对象池的默认实现

队列 OR 栈

主要区别:栈结构会频繁使用栈顶元素,而队列结构的元素是平等的。 因此栈结构有以下特性: 1.如果复用对象存在bug,更容易发现。 2.如果池化的对象是List这类会扩容的对象,则只有栈顶部分的对象会扩容较大。
作者:
wjybxx date 2023/4/1
  • 构造器详细资料

    • DefaultObjectPool

      public DefaultObjectPool(Supplier<? extends T> factory, ResetPolicy<? super T> resetPolicy)
    • DefaultObjectPool

      public DefaultObjectPool(Supplier<? extends T> factory, ResetPolicy<? super T> resetPolicy, int poolSize)
      参数:
      factory - 对象创建工厂
      resetPolicy - 重置方法
      poolSize - 缓存池大小;0表示不缓存对象
  • 方法详细资料

    • rent

      public T rent()
      从接口复制的说明: ObjectPool
      从池中租借一个对象
      指定者:
      rent 在接口中 ObjectPool<T>
      返回:
      如果池中有可用的对象,则返回缓存的对象,否则返回一个新的对象
    • returnOne

      public void returnOne(T object)
      从接口复制的说明: ObjectPool
      将指定的对象放入池中 - 重置策略却决于ResetPolicy
      指定者:
      returnOne 在接口中 ObjectPool<T>
      参数:
      object - 要回收的对象
    • returnAll

      public void returnAll(Collection<? extends T> objects)
      从接口复制的说明: ObjectPool
      将指定的对象放入池中 - 重置策略却决于ResetPolicy
      指定者:
      returnAll 在接口中 ObjectPool<T>
      参数:
      objects - 要回收的对象
    • clear

      public void clear()
      从接口复制的说明: ObjectPool
      删除此池中的所有对象 (可空实现)
      指定者:
      clear 在接口中 ObjectPool<T>