类 ConcurrentObjectPool<T>

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

@ThreadSafe public final class ConcurrentObjectPool<T> extends Object implements ObjectPool<T>
简单的固定大小的对象池实现 (未鉴定归属,可归还外部对象,适用简单场景)
作者:
wjybxx date - 2024/1/6
  • 字段详细资料

  • 构造器详细资料

    • ConcurrentObjectPool

      public ConcurrentObjectPool(Supplier<? extends T> factory, Consumer<? super T> resetHandler)
      参数:
      factory - 对象创建工厂
      resetHandler - 重置方法
    • ConcurrentObjectPool

      public ConcurrentObjectPool(Supplier<? extends T> factory, Consumer<? super T> resetHandler, int poolSize)
      参数:
      factory - 对象创建工厂
      resetHandler - 重置方法
      poolSize - 缓存池大小;0表示不缓存对象
    • ConcurrentObjectPool

      public ConcurrentObjectPool(Supplier<? extends T> factory, Consumer<? super T> resetHandler, int poolSize, Predicate<? super T> filter)
      参数:
      factory - 对象创建工厂
      resetHandler - 重置方法
      poolSize - 缓存池大小;0表示不缓存对象
      filter - 对象回收过滤器
  • 方法详细资料

    • getPoolSize

      public int getPoolSize()
      获取池大小
    • getAvailableCount

      public int getAvailableCount()
      可用对象数 注意:这只是一个估值,通常仅用于debug和测试用例
    • get

      @Deprecated public T get()
      已过时。
      从接口复制的说明: ObjectPool
      该接口更多用于适配,不建议直接使用
      指定者:
      get 在接口中 ObjectPool<T>
      指定者:
      get 在接口中 Supplier<T>
    • acquire

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

      public void release(T obj)
      从接口复制的说明: ObjectPool
      将指定的对象放入池中
      指定者:
      release 在接口中 ObjectPool<T>
      参数:
      obj - 要回收的对象
    • clear

      public void clear()
      从接口复制的说明: ObjectPool
      释放此池中的所有对象 (如果属于特殊资源,可不清理)
      指定者:
      clear 在接口中 ObjectPool<T>