📄 myobjectpool.java
字号:
package net.betterjava.performance.pool.impl;
import java.util.Iterator;
import org.apache.commons.pool.PoolableObjectFactory;
import org.apache.commons.pool.ObjectPool;
import java.util.List;
import java.util.LinkedList;
public class MyObjectPool implements ObjectPool {
private List pool = new LinkedList();
private PoolableObjectFactory factory;
public MyObjectPool() {
super();
}
public MyObjectPool(PoolableObjectFactory factory) {
super();
this.factory = factory;
}
public synchronized Object borrowObject() throws Exception {
if (pool.isEmpty())
return factory.makeObject();
else {
return pool.remove(0);
}
}
public synchronized void clear() throws Exception, UnsupportedOperationException {
Iterator it = pool.iterator();
while (it.hasNext()) {
try {
factory.destroyObject(it.next());
} catch (Exception e) {
}
it.remove();
}
pool.clear();
notifyAll();
}
public synchronized void close() throws Exception {
clear();
pool = null;
factory = null;
}
public int getNumActive() throws UnsupportedOperationException {
return 0;
}
public int getNumIdle() throws UnsupportedOperationException {
return 0;
}
public synchronized void returnObject(Object obj) throws Exception {
pool.add(0, obj);
}
public void setFactory(PoolableObjectFactory factory)
throws UnsupportedOperationException, IllegalStateException {
this.factory = factory;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -