⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractpool.java

📁 distrubit account system for bank,
💻 JAVA
字号:
package Pool;
import java.util.ArrayList;
import java.util.Vector;
/**
 *@author hsp 
 *定义一个抽象的资源池
 */
public abstract class AbstractPool implements Pool {
	/**
	 *定义资源池的大小 
	 */
    private int defaultPoolSize = 300;
    /**
     *定义一个链表以存放备用资源 
     */
    private ArrayList freePooledObjects = new ArrayList();
    /**
     *定义一个链表以存放正在资源 
     */
    private ArrayList inusePooledObjects = new ArrayList();
    /**
     *定义一个AccountPooledObjectFactory类型的参数以获得对象引用 
     */
    private AccountPooledObjectFactory accountpooledObjectFactory; 
    /**
     *构造方法 
     */
    public AbstractPool () {
    	accountpooledObjectFactory = new AccountPooledObjectFactory();
	     for (int i = 0; i < defaultPoolSize; i++) {
	    	 freePooledObjects.add(accountpooledObjectFactory.newInstance());
	    	 }
    }     
    /**
     *从备用资源里获得一个实例作为可用资源 
     */
    public synchronized Object getPooledObject() {
    	if (freePooledObjects.size() == 0) {
    		return null;
    	}
    	Object pooledObject = freePooledObjects.remove(0);
    	inusePooledObjects.add(pooledObject);
    	System.out.println("当前采用的实例在资源池里面的位置"+inusePooledObjects.indexOf(pooledObject));
        return pooledObject;
    }
    /**
     *@param  pooledObject实例名称
     *通过实例名称释放资源池里正在使用的实例 
     */
    public synchronized void releasePooledObject(Object pooledObject) {
    	System.out.println(inusePooledObjects.indexOf(pooledObject));
    	freePooledObjects.add(inusePooledObjects.remove(inusePooledObjects.indexOf(pooledObject)));
    }
    /**
     *@param i 实例所在的位置 
     *通过实例所在的位置释放正在使用的实例 
     */
    public synchronized void releasePooledObjectById(int i) {
    	freePooledObjects.add(inusePooledObjects.remove(i));
    }
    /**
     *获得资源池里备用的资源的容量 
     */
    public int getFreePoolLength() {
    	return freePooledObjects.size();
    }
    /**
     *获得资源池里当前可以使用资源的容量 
     */
    public int getInusePoolLength() {
    	return inusePooledObjects.size();
    }
    /**
     *@param i 实例在资源池里面的位置 
     *通过id获得资源池里面可以使用的实例 
     */
    public Object getPooledObjectById(int i) {
    	return inusePooledObjects.get(i);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -