58 lines
1.2 KiB
Java
58 lines
1.2 KiB
Java
|
package org.postgresql;
|
||
|
|
||
|
import java.util.Hashtable;
|
||
|
|
||
|
/**
|
||
|
* Just a factory class for creating and reusing
|
||
|
* ObjectPool arrays of different sizes.
|
||
|
*/
|
||
|
public class ObjectPoolFactory {
|
||
|
private static Hashtable instances = new Hashtable();
|
||
|
|
||
|
ObjectPool pool = new ObjectPool();
|
||
|
int maxsize;
|
||
|
|
||
|
public static ObjectPoolFactory getInstance(int size){
|
||
|
Integer s = new Integer(size);
|
||
|
ObjectPoolFactory poolFactory = (ObjectPoolFactory) instances.get(s);
|
||
|
if(poolFactory == null){
|
||
|
synchronized(instances) {
|
||
|
poolFactory = (ObjectPoolFactory) instances.get(s);
|
||
|
if(poolFactory == null){
|
||
|
poolFactory = new ObjectPoolFactory(size);
|
||
|
instances.put(s, poolFactory);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return poolFactory;
|
||
|
}
|
||
|
|
||
|
private ObjectPoolFactory(int maxsize){
|
||
|
this.maxsize = maxsize;
|
||
|
}
|
||
|
|
||
|
public ObjectPool[] getObjectPoolArr(){
|
||
|
ObjectPool p[] = null;
|
||
|
synchronized(pool){
|
||
|
if(pool.size() > 0)
|
||
|
p = (ObjectPool []) pool.remove();
|
||
|
}
|
||
|
if(p == null) {
|
||
|
p = new ObjectPool[maxsize];
|
||
|
for(int i = 0; i < maxsize; i++){
|
||
|
p[i] = new ObjectPool();
|
||
|
}
|
||
|
}
|
||
|
return p;
|
||
|
}
|
||
|
|
||
|
public void releaseObjectPoolArr(ObjectPool p[]){
|
||
|
synchronized(pool){
|
||
|
pool.add(p);
|
||
|
for(int i = 0; i < maxsize; i++){
|
||
|
p[i].clear();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|