类 ConcurrentArrayPool<T>

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

@ThreadSafe public final class ConcurrentArrayPool<T> extends Object implements ArrayPool<T>
简单并发数组池实现。

缺陷

1.池大小的控制不是精确的。 2.未对数组的归属权进行验证。

上面两个问题对于一般场景问题不大,如果有严格的要求,可采用其它的对象池实现。

作者:
wjybxx date - 2024/1/6
  • 字段详细资料

    • SHARED_BYTE_ARRAY_POOL

      public static final ConcurrentArrayPool<byte[]> SHARED_BYTE_ARRAY_POOL
      全局共享字节数组池
    • SHARED_CHAR_ARRAY_POOL

      public static final ConcurrentArrayPool<char[]> SHARED_CHAR_ARRAY_POOL
      全局共享char数组池 -- charArray的使用频率稍低
  • 构造器详细资料

  • 方法详细资料

    • acquire

      @Nonnull public T acquire()
      从接口复制的说明: ArrayPool
      返回池中一个默认大小的数组
      指定者:
      acquire 在接口中 ArrayPool<T>
      指定者:
      acquire 在接口中 ObjectPool<T>
      返回:
      如果池中有可用的对象,则返回缓存的对象,否则返回一个新的对象
    • acquire

      public T acquire(int minimumLength)
      从接口复制的说明: ArrayPool
      1.返回的字节数组可能大于期望的数组长度4 2.默认情况下不清理
      指定者:
      acquire 在接口中 ArrayPool<T>
      参数:
      minimumLength - 期望的最小数组长度
      返回:
      池化的字节数组
    • acquire

      public T acquire(int minimumLength, boolean clear)
      指定者:
      acquire 在接口中 ArrayPool<T>
      参数:
      minimumLength - 期望的最小数组长度
      clear - 返回前是否先清理,这对于共享池来说比较重要
      返回:
      池化的字节数组
    • release

      public void release(T array)
      从接口复制的说明: ArrayPool
      归还数组到池 是否清理数组取决于配置和实现
      指定者:
      release 在接口中 ArrayPool<T>
      指定者:
      release 在接口中 ObjectPool<T>
      参数:
      array - 要回收的对象
    • release

      public void release(T array, boolean clear)
      从接口复制的说明: ArrayPool
      归还数组到池
      指定者:
      release 在接口中 ArrayPool<T>
      参数:
      array - 租借的对象
      clear - 是否清理数组 - 只有当前池默认不清理的情况下,该参数才有效用。
    • clear

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