Android 包 androidx.core.util 下有个工具类 Pools,为开发者提供了两种对象池,没有同步控制的SimplePool 和 有同步控制(访问加锁)的SynchronizedPool(继承自SimplePool),方便开发者根据需要创建对应类型的对象池
Pools类的源码也非常简单,一看就懂
public final class Pools {
/**
* 对象池接口
*/
public interface Pool<T> {
/**
* 从池中获取一个对象,没有则返回null
*/
@Nullable
T acquire();
/**
* 释放对象,将对象放入对象池中
* 如果对象已经在池中类,会抛出IllegalStateException异常
* 成功释放(池中有多余的空间)返回true;否则,返回false
*/
boolean release(@NonNull T instance);
}
private Pools() {
/* 私有构造方法,不允许外部创建实例 */
}
/**
* 没有同步控制的简单对象池
*/
public static class SimplePool<T> implements Pool<T> {
private final Object[] mPool;
private int mPoolSize;
/**
* Creates a new instance.