亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java設計模式之實現對象池模式示例分享

2019-11-26 15:41:34
字體:
來源:轉載
供稿:網友

ObjectPool抽象父類

復制代碼 代碼如下:

import java.util.Iterator;
import java.util.Vector;

public abstract class ObjectPool<T> {

   private Vector<T> locked, unlocked;   // locked是已占用的對象集合,unlocked是可用對象集合

   public ObjectPool() {
    locked = new Vector<T>();
    unlocked = new Vector<T>();
   }

   // 創建對象
   protected abstract T create();

   // 驗證對象有效性
   public abstract boolean validate(T o);

   // 使對象失效
   public abstract void expire(T o);

   // 檢出:從對象池獲取對象
   public synchronized T checkOut() {
    T t;
    if (unlocked.size() > 0) {
     Iterator<T> iter = unlocked.iterator();
     while(iter.hasNext()) {
      t = iter.next();
      if(validate(t)) {   // 對象有效
       unlocked.remove(t);
       locked.add(t);

       return t;
      }
      else {   // 對象已經失效
       unlocked.remove(t);
       expire(t);
      }
     }
    }

    // 對象池塘沒有可用對象,創建新對象
    t = create();
    locked.add(t);

    return (t);
   }

   // 檢入:釋放對象回對象池
   public synchronized void checkIn(T t) {
    locked.remove(t);
    if(validate(t)) {   // 如果對象仍有效則放回可用對象集合中
     unlocked.add(t);
    }
    else {   // 否則使對象失效
     expire(t);
    }
   }

}

JDBCConnectionPool子類

復制代碼 代碼如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JDBCConnectionPool extends ObjectPool<Connection> {

 private String url, usr, pwd;

 public JDBCConnectionPool(String driver, String url, String usr, String pwd) {
  super();

  // 加載對應的數據庫驅動
  try {
   Class.forName(driver).newInstance();
  }
  catch(Exception e) {
   e.printStackTrace();
  }

  this.url = url;
  this.usr = usr;
  this.pwd = pwd;
 }

 @Override
 protected Connection create() {
  try {
   return DriverManager.getConnection(url, usr, pwd);
  }
  catch(SQLException e) {
   e.printStackTrace();
  }

  return null;
 }

 @Override
 public boolean validate(Connection o) {
  try {
   return o.isClosed();
  }
  catch(SQLException e) {
   e.printStackTrace();
  }

  return false;
 }

 @Override
 public void expire(Connection o) {
  try {
   o.close();
  }
  catch(SQLException e) {
   e.printStackTrace();
  }
  finally {
   o = null;
  }
 }

 public static void main(String[] args) {
  JDBCConnectionPool dbConnPool = new JDBCConnectionPool("com.mysql.jdbc.Driver", "jdbc:mysql://127.0.0.1:3306/test", "root", "123");

  // 獲取數據庫連接對象
  Connection conn = dbConnPool.checkOut();

  // 使用數據庫連接對象
  // ...

  // 釋放數據庫連接對象
  dbConnPool.checkIn(conn);

 }

}

復制代碼 代碼如下:

class Pool {
   private static final MAX_AVAILABLE = 100;
   private final Semaphore available = new Semaphore(MAX_AVAILABLE, true);

   public Object getItem() throws InterruptedException {
     available.acquire();
     return getNextAvailableItem();
   }

   public void putItem(Object x) {
     if (markAsUnused(x))
       available.release();
   }

   // Not a particularly efficient data structure; just for demo

   protected Object[] items = ... whatever kinds of items being managed
   protected boolean[] used = new boolean[MAX_AVAILABLE];

   protected synchronized Object getNextAvailableItem() {
     for (int i = 0; i < MAX_AVAILABLE; ++i) {
       if (!used[i]) {
          used[i] = true;
          return items[i];
       }
     }
     return null; // not reached
   }

   protected synchronized boolean markAsUnused(Object item) {
     for (int i = 0; i < MAX_AVAILABLE; ++i) {
       if (item == items[i]) {
          if (used[i]) {
            used[i] = false;
            return true;
          } else
            return false;
       }
     }
     return false;
   }

 }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
26uuu亚洲伊人春色| 成人国产精品一区| 欧美人成在线视频| 国产精品成人av性教育| 国产精品嫩草影院一区二区| 啊v视频在线一区二区三区| 精品香蕉在线观看视频一| 国产精品久久久久久久久久尿| 日本精品视频在线播放| 久久精品国产综合| 久久久久久久久综合| 亚洲精品欧美极品| 亚洲乱码国产乱码精品精| 国产激情综合五月久久| 555www成人网| 久久福利网址导航| 久久免费视频在线观看| 国产欧洲精品视频| 日韩在线观看你懂的| 欧美性xxxx极品高清hd直播| 欧洲成人午夜免费大片| 欧美亚洲国产视频小说| 日韩欧美一区视频| 日韩在线视频线视频免费网站| 中文字幕日韩免费视频| 国内成人精品视频| 亚洲男人天堂网站| 久久琪琪电影院| 亚洲欧美综合精品久久成人| 国产精品久久久久久久久久99| 欧美激情视频网| 亚洲欧美精品中文字幕在线| 欧美大片在线看免费观看| 91po在线观看91精品国产性色| 色噜噜国产精品视频一区二区| 亚洲精品美女久久| 神马久久桃色视频| 国产午夜精品视频免费不卡69堂| 成人午夜小视频| 97超级碰碰人国产在线观看| 久久久99免费视频| 国产精品99久久久久久www| 欧美成人网在线| 亚洲精选中文字幕| 在线视频亚洲欧美| 51精品在线观看| 欧美日韩在线一区| 在线a欧美视频| 美女久久久久久久久久久| 欧美性xxxx极品hd满灌| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产精品久久久久免费a∨大胸| 精品久久久久久久久久ntr影视| 高清亚洲成在人网站天堂| 51ⅴ精品国产91久久久久久| 日韩av三级在线观看| 一本色道久久88精品综合| 国产精品69久久久久| 欧美在线视频a| 欧美激情videos| 精品动漫一区二区三区| 日韩最新中文字幕电影免费看| 青草热久免费精品视频| 麻豆精品精华液| 国产福利成人在线| 日韩www在线| 九九视频直播综合网| 日韩精品中文在线观看| 久久91亚洲人成电影网站| 日韩精品免费在线视频观看| 亚洲大尺度美女在线| 在线成人激情视频| 色一情一乱一区二区| 国产精品久久久久久久7电影| 日韩成人网免费视频| 日韩一级黄色av| 成人午夜在线视频一区| 亚洲国产精品久久久久秋霞不卡| 国产精品视频一区二区高潮| 成人精品在线观看| 精品久久久国产精品999| 亚洲精品国产福利| 亚洲自拍小视频免费观看| 欧美性高潮床叫视频| 国产精品欧美激情| 一区二区日韩精品| 亚洲精品免费一区二区三区| 91av在线网站| 91九色视频导航| 欧美国产日韩一区二区三区| 欧美高清激情视频| 国产精品影片在线观看| 久热99视频在线观看| 中文字幕日韩精品有码视频| 欧美在线影院在线视频| 国产免费久久av| 成人精品在线视频| 亚洲天堂av高清| 久久久久久av| 一区二区三欧美| 2021久久精品国产99国产精品| 久久久欧美一区二区| 亚洲精品美女免费| 亚洲精品456在线播放狼人| 欧美国产日韩一区二区| 欧美黑人xxxⅹ高潮交| 草民午夜欧美限制a级福利片| 欧美高清在线视频观看不卡| 色悠久久久久综合先锋影音下载| 亚洲成年人在线| 国产精品福利小视频| 亚洲精品日韩欧美| 精品国产网站地址| 欧美成人自拍视频| 欧美视频中文在线看| 欧美日韩激情小视频| 插插插亚洲综合网| 国产在线观看精品| 欧美国产日韩xxxxx| 992tv成人免费视频| 久久精品99无色码中文字幕| 亚洲四色影视在线观看| 久久久久免费精品国产| 欧美性色19p| 久久久免费观看视频| 中文字幕亚洲一区二区三区五十路| 日本久久久久久久久久久| 欧美一区二区三区免费视| 久久五月情影视| 国产日韩中文在线| 91精品国产高清久久久久久91| 亚洲影视中文字幕| 成人写真福利网| 萌白酱国产一区二区| 国产美女精品视频免费观看| 色婷婷久久一区二区| 777午夜精品福利在线观看| 午夜精品一区二区三区在线视| 8x拔播拔播x8国产精品| 91经典在线视频| 日韩资源在线观看| 亚洲美女中文字幕| 欧美在线观看日本一区| 亚洲一区二区中文| 久久久97精品| 亚洲欧洲午夜一线一品| 日韩高清免费在线| 欧美日韩国产丝袜另类| 一本一本久久a久久精品牛牛影视| 亚洲欧洲av一区二区| 欧美性少妇18aaaa视频| 亚洲国产成人久久综合一区| 久久久天堂国产精品女人| 欧美国产日韩中文字幕在线| 精品国产91乱高清在线观看| 日本在线观看天堂男亚洲| 欧美性猛交xxxx乱大交| 欧美又大粗又爽又黄大片视频| 日本午夜在线亚洲.国产| 亚洲成人精品视频在线观看| 岛国av午夜精品| 主播福利视频一区| 国产精品视频xxxx| 亚洲精品久久久一区二区三区|