1
//构造函数,请不要被initIdleCapacity误解。 调用构造函数时,没有包含对象。
//initIdleCapacity指定目标池的初始引用大小。 空间不够的话会自动增加。 但是,在源代码中没有看到任何用途。
//maxIdle:或returnObject (,可以存储的对象数量的上限)。 达到此上限后,送回池的对象将自动发送回回收。
//initIdleCapacity大于maxIdle
publicstackobjectpool (poolableobjectfactoryfactory,intmaxIdle,intinitIdleCapacity ) {
this._pool=null;
this._factory=null;
this._maxSleeping=8;
this._numActive=0;
this._factory=factory;
this._maxSleeping=maxIdle
intinitcapacity=initidlecapacity
this._pool=newStack (;
this._ pool.ensure capacity (initcapacitythis._ max sleeping? this._ max sleeping 3360 init capacity;
}
publicsynchronizedtborrowobject () throwsException{
this.assertOpen (;
Objectobj=null;
booleannewlyCreated=false;
wile(null==obj ) {
if (! this._pool.empty () /如果堆栈中有对象,则弹出窗口
obj=this._pool.pop (;
}else{//如果堆栈中没有对象
if(null==this._factory ) {
thrownewNoSuchElementException;
}
obj=this._factory.makeObject (; //创建对象
newlyCreated=true;
if (obj==空值) {
thrownewnosuchelementexception (' poolableobjectfactory.make object ) ) returnednull.' );
}
}。
}