📄 objectpooling.java
字号:
//实例池类
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -