SimplePool与SynchronizedPool

简介:对象池,适用于频繁创建和回收对象场景,通过复用对象池的对象实现。

(一)内部通过数组存储。

(二)acquire()从后向前取值,如果有值则将该数组位值赋null并返回该值,否则继续向前直到数组头仍无值则返回null

(三)通过release(T obj)方法将对象放到数组里,如果数组已存在该对象则抛异常,不存在且数组没有满则添加

(四)SyschronizedPool是SimplePool的子类,通过对acquire()和release()方法加锁实现。

Test test = mPool.acquire();
if (test == null){
   test = new Test();
}
//使用完后将对象放到池中以备后用
mPool.release(test);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 中,对象池可以用于重复使用对象,避免频繁创建和销毁对象的开销,从而提高应用程序的性能。Android 提供了 `Pools` 工具类来实现对象池功能。 使用对象池的步骤如下: 1. 定义需要重复使用的对象类,并实现 `Poolable` 接口。该接口包含了 `reset()` 方法,用于对象重置,以便在重复使用时清除旧状态。 ```java public class MyObject implements Poolable { private int mValue; public MyObject() { // constructor } public void setValue(int value) { mValue = value; } public int getValue() { return mValue; } @Override public void reset() { // reset object state mValue = 0; } } ``` 2. 创建对象池,并指定对象类和最大对象数。 ```java ObjectPool<MyObject> mObjectPool = new SimplePool<>(10, MyObject::new); ``` 3. 从对象池中获取对象,并在使用完成后归还对象。 ```java MyObject myObject = mObjectPool.acquire(); myObject.setValue(123); // use object mObjectPool.release(myObject); ``` 在上述示例中,`SimplePool` 是 `Pools` 工具类提供的一个简单的对象池实现,其中第一个参数是对象池的最大对象数,第二个参数是一个 `Supplier`,用于创建新的对象。`acquire()` 方法用于获取对象,如果对象池中有可用对象,则返回一个对象;否则,返回 `null`。`release()` 方法用于归还对象对象池中。 需要注意的是,使用对象池时要确保对象状态的正确性,即在获取对象时,需要先重置对象的状态,以便在重复使用时,保证对象状态的一致性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值