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

  • 相关阅读:
    安装Django、Nginx和uWSGI
    创建Orcale数据库链接访问外部数据库
    ER图,以及转化成关系模式
    eclipse中的Java项目导出成为一个可以直接双击运行的jar文件
    电脑添加新的字体
    JDBC 的编程步骤
    转转基础服务性能压测实战
    公司起诉CTO拖延研发进度,索赔90万
    详解MQ消息队列及四大主流MQ的优缺点
    晒一波程序员的杯子,逼格超级高
  • 原文地址:https://www.cnblogs.com/wzfyang/p/3878272.html
Copyright © 2011-2022 走看看