background image

  private Object currentObj;//该对象池当前可以借出的对象

  private Vector pool;//用于存放对象的池

  public ObjectPool(ParameterObject paraObj, Class clsType) {
  this.paraObj = paraObj;
  this.clsType = clsType;
  pool = new Vector();
  }
  public Object getObject() {
  if (pool.size() < = paraObj.getMinCount()) {
  if (currentNum < = paraObj.getMaxCount()) {
  //如果当前池中无对象可用,而且已创建的对象数目小于所限制的最大值,就利用
  //PoolObjectFactory 创建一个新的对象

  PoolableObjectFactory objFactory =PoolableObjectFactory.getInstance();
  currentObj = objFactory.create Object (clsType);
  currentNum++;
  } else {
  //如果当前池中无对象可用,而且所创建的对象数目已达到所限制的最大值,
  //就只能等待其它线程返回对象到池中

  synchronized (this) {
  try {
  wait();
  } catch (InterruptedException e) {
  System.out.println(e.getMessage());
  e.printStackTrace();
  }
  currentObj = pool.firstElement();
  }
  }
  } else {
  //如果当前池中有可用的对象,就直接从池中取出对象

  currentObj = pool.firstElement();
  }
  return currentObj;
  }
  public void returnObject(Object obj) {
  // 确保对象具有正确的类型