链表结构对象池的一种实现

  /** 
     *  
     * VacantCell:代表空的cells,由多个cell组成,将其实现为一个cell池,减少对象的创建 
     * 
     */  
    static final class VacantCell{  
          
        private static final int POOL_SIZE = 100; //池最多缓存100个VacantCell  
        private static final Object mLock = new Object(); //用作同步锁  
          
        private static VacantCell mRoot;  
        private static int count;  
          
        private VacantCell mNext;  
  
        //VacantCell的大小信息  
        private int cellX;  
        private int cellY;  
        private int cellHSpan;  
        private int cellVSpan;  
          
        public static VacantCell acquire(){  
            synchronized (mLock) {  
                if(mRoot == null){  
                    return new VacantCell(); //一开始没有的时候,一直新创建再返回  
                }  
                //如果池存在,则从池中取  
                VacantCell info = mRoot;  
                mRoot = info.mNext;  
                count--; //记得将统计更新  
                  
                return info;  
            }  
        }  
          
        //release这个对象自身  
        public void release(){  
            synchronized(mLock){  
                if(count < POOL_SIZE){  
                    count++;  
                    mNext = mRoot;  
                    mRoot = this;  
                }  
            }  
        }  
    }  
}  

转载于:https://www.cnblogs.com/wzfyang/p/3878272.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值