連接池---自定義鏈接

一 連接池概念
數(shù)據(jù)庫連接池負(fù)責(zé)分配槽畔、管理和釋放數(shù)據(jù)庫連接,它允許應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫連接,而不是再重新建立一個(gè)试伙;釋放空閑時(shí)間超過最大空閑時(shí)間的數(shù)據(jù)庫連接來避免因?yàn)闆]有釋放數(shù)據(jù)庫連接而引起的數(shù)據(jù)庫連接遺漏田绑。這項(xiàng)技術(shù)能明顯提高對(duì)數(shù)據(jù)庫操作的性能勤哗。
二 思路

  • 指定初始化連接數(shù)目程序啟動(dòng)時(shí)就執(zhí)行創(chuàng)建
  • 指定最大連接數(shù)目
  • 指定當(dāng)前使用連接數(shù)目

三 實(shí)現(xiàn)過程

  • 指定全局變量:初始化數(shù)目,最大連接數(shù)掩驱,當(dāng)前連接數(shù)芒划,連接池集合
  • 構(gòu)造函數(shù):循環(huán)創(chuàng)建 “初始化數(shù)目” 連接
  • 數(shù)據(jù)庫連接方法
  • 獲取連接
    • 池中有連接,直接拿
    • 池中沒有連接欧穴,判斷是否達(dá)到做大連接數(shù);達(dá)到民逼,拋出異常;沒有達(dá)到最大連接數(shù)涮帘,創(chuàng)建新的連接
  • 釋放和連接(連接放回集合中)
    四 代碼
package utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.util.LinkedList;

/**
 * Created by pc on 2017/9/10.
 */
public class MyConnectionPool {
     int init_count = 3; //初始化鏈接數(shù)目
     int max_count = 10;  //最大鏈接數(shù)
     int current_count = 0;  //記錄當(dāng)前使用的鏈接數(shù)
    //連接池:存放所有的初始化鏈接
    public LinkedList<Connection> pool = new LinkedList<Connection>();
    //1.構(gòu)造函數(shù)缴挖,初始化連接放入連接池
   public MyConnectionPool(){
        for (int i = 0;i < init_count;i++){
            current_count++;//記錄當(dāng)前連接數(shù)
            //把鏈接加到連接池
            pool.addLast(creatConnection());
}
    }
    //2.創(chuàng)建一個(gè)新的鏈接方法
    public Connection creatConnection(){
        try{
            Class.forName("com.mysql.jdbc.Driver");//加載驅(qū)動(dòng)
            String url = "jdbc:mysql://localhost:3306/test";//加載數(shù)據(jù)庫鏈接
            String user = "root";//配置用戶名
            String password = "root";//配置密碼
            return DriverManager.getConnection(url,user,password);//獲取鏈接
        }catch (Exception e){
            throw new RuntimeException(e);
        }
    }
    //3.獲取鏈接
    public Connection getConnection(){
        //池中有鏈接直接拿
        if (pool.size() > 0){
            return  pool.removeFirst();//將第一個(gè)list集合刪除并返回
        }
        //池中沒有鏈接,判斷是否達(dá)到最大連接數(shù)焚辅;如果沒有映屋,創(chuàng)建新的鏈接
        if (current_count < max_count){
            //記錄當(dāng)前使用的連接數(shù)
            current_count++;
            //創(chuàng)建鏈接
            return  creatConnection();
        }
        //達(dá)到最大鏈接,拋出異常
        throw new  RuntimeException("當(dāng)前已經(jīng)達(dá)到最大連接數(shù)");
    }
    //4.釋放鏈接
    public void realeaseConnection(Connection conn){
        //判斷:連接池中數(shù)目如果小于初始化連接同蜻,就放入池中
        if (pool.size() < init_count){
            pool.addLast(conn);
        }else {
            try {
                //關(guān)閉連接
                    current_count--;
                    conn.close();
            }catch (Exception e){
                throw new RuntimeException(e);
            }
        }
    }
}
結(jié)果顯示
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末棚点,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子湾蔓,更是在濱河造成了極大的恐慌瘫析,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件默责,死亡現(xiàn)場(chǎng)離奇詭異贬循,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)桃序,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門杖虾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人媒熊,你說我怎么就攤上這事奇适。” “怎么了芦鳍?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵嚷往,是天一觀的道長。 經(jīng)常有香客問我柠衅,道長皮仁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮贷祈,結(jié)果婚禮上巩割,老公的妹妹穿的比我還像新娘。我一直安慰自己付燥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布愈犹。 她就那樣靜靜地躺著键科,像睡著了一般。 火紅的嫁衣襯著肌膚如雪漩怎。 梳的紋絲不亂的頭發(fā)上勋颖,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音勋锤,去河邊找鬼饭玲。 笑死,一個(gè)胖子當(dāng)著我的面吹牛叁执,可吹牛的內(nèi)容都是我干的茄厘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谈宛,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼次哈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吆录,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤窑滞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后恢筝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哀卫,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年撬槽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了此改。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡侄柔,死狀恐怖带斑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情勋拟,我是刑警寧澤勋磕,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站敢靡,受9級(jí)特大地震影響挂滓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜啸胧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一赶站、第九天 我趴在偏房一處隱蔽的房頂上張望幔虏。 院中可真熱鬧,春花似錦贝椿、人聲如沸想括。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瑟蜈。三九已至,卻和暖如春渣窜,著一層夾襖步出監(jiān)牢的瞬間铺根,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國打工乔宿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留位迂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓详瑞,卻偏偏與公主長得像掂林,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子坝橡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 最原始的數(shù)據(jù)庫連接就是我們打開一個(gè)連接党饮,使用過后再關(guān)閉該鏈接來釋放資源。頻繁的新建打開再關(guān)閉連接對(duì)jvm和數(shù)據(jù)庫都...
    野柳閱讀 6,362評(píng)論 1 11
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理驳庭,服務(wù)發(fā)現(xiàn)刑顺,斷路器,智...
    卡卡羅2017閱讀 134,652評(píng)論 18 139
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,139評(píng)論 30 470
  • 最近幾天因?yàn)樾毟忻巴砩纤缓盟浅#钜骋哺苡绊懚滋茫绯拷兴鸫策€睡眼朦朧,想讓她自己睡又說害怕贝淤,哎只能慢慢來...
    侯耀斐媽媽閱讀 213評(píng)論 1 4
  • 不少的寫作者柒竞,尤其是所謂的嚴(yán)肅文學(xué)作者,特別喜歡在故事里藏一些“私貨”播聪,生怕讀者不相信這世界沒救了朽基,也生怕大家不把...
    煉屁士閱讀 342評(píng)論 0 3