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

  • 相关阅读:
    复杂json后端解析出现第二层无数据的问题
    idea启动springboot项目报Error running 'ServiceStarter': Command line is too long. Shorten command line for ServiceStarter or also for Application
    docker强制关闭命令
    scala下实现actor多线程基础
    orcale数据库分配用户
    多线程实现互相通信
    从一份配置清单详解 Nginx 服务器配置
    PostgreSQL CentOS 7 安装配置
    .net core session部分浏览器或移动客户端不可用
    VS2019 远程调试
  • 原文地址:https://www.cnblogs.com/wzfyang/p/3878272.html
Copyright © 2011-2022 走看看