/**
*
* 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;
}
}
}
}
}
努力加载评论中...
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步