zoukankan      html  css  js  c++  java
  • 链表结构对象池的一种实现

      /** 
         *  
         * 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;  
                    }  
                }  
            }  
        }  
    }  

  • 相关阅读:
    两角和的正切
    积化和差与和差化积
    require.js的简单使用
    HTML、css、javascript、DOM编程
    SignalR长连接的简单用法
    【ESP8266】发送HTTP请求
    记录自己的第一篇博客
    1 为什么搭建.Net core下的云开发框架
    C#线程中LOCK的意义
    ping命令执行过程详解
  • 原文地址:https://www.cnblogs.com/wzfyang/p/3878272.html
Copyright © 2011-2022 走看看