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

  • 相关阅读:
    [LeetCode] Reverse Linked List II 解题报告
    [LeetCode] Search for a Range 解题报告
    Git教程
    今天使用VS2012遇到一个问题:"链接器工具错误 LNK2026 XXX模块对于 SAFESEH 映像是不安全的"
    套接字的域和地址族
    套接口和I/O通信
    2010年第82届奥斯卡金像奖获奖影片名单
    恩信ERP7.10安装、定制和二次开发 (2)
    从 Google 代码库找到的好东西 [转]
    更自然的人机交互——2010微软技术节现场速递
  • 原文地址:https://www.cnblogs.com/wzfyang/p/3878272.html
Copyright © 2011-2022 走看看