objectpooling.java
来自「基于corba的资源池,实现了实例池供客户端调用,并且实例池对实例的分配采用策略」· Java 代码 · 共 64 行
JAVA
64 行
//实例池类
package pool;
/**
* 实例池类
* @author XuYing
*
*/
public class ObjectPooling extends AbstractObjectPool
{
public ObjectPooling(SelectorStrategy s)
{
super(s);
// TODO Auto-generated constructor stub
}
/**
* 申请获取资源, 如遇资源没有, 则阻塞
*/
public synchronized Object checkOut(String id)
{
Object po = super.checkOut(id);
if (null == po) {
try {
//实例池到一定规模就全部清空
if(usedPooledObjects.size()>(maxPoolSize-minPoolSize)){
super.expire();
}else{
wait();
}
} catch (/*InterruptedException*/Exception e) {
// TODO Auto-generated catch block
System.err.println("InterruptedException");
System.err.println(e.getMessage());
e.printStackTrace();
}
// try again
return checkOut(id);
}
return po;
}
/**
* 释放资源, 并通知其他线程
*/
public synchronized void checkIn(Object o)
{
super.checkIn(o);
notifyAll();
}
public Object create()
{
return pof.newInstance();
}
public boolean validate( Object o ,String id)
{
if(((interfaceImpl.AccountImpl)o).getId().equals(id))
return true;
else return false;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?