麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

java學習筆記—標準連接池的實現(xiàn)(27)

2019-11-14 23:40:08
字體:
供稿:網(wǎng)友
java學習筆記—標準連接池的實現(xiàn)(27)

javax.sql.DataSource.

Java.sql.*

DataSource 接口由驅(qū)動程序供應(yīng)商實現(xiàn)。共有三種類型的實現(xiàn):

  1. 基本實現(xiàn) - 生成標準的 Connection 對象 – 一個DataSource數(shù)據(jù)源中,只有一個Connection ,這個不是池管理。
  2. 連接池實現(xiàn) [W1]- 生成自動參與連接池的 Connection 對象。
  3. 分布式事務(wù)實現(xiàn) - 生成一個 Connection 對象,該對象可用于分布式事務(wù),大多數(shù)情況下總是參與連接池。JTA.jar – SUN。

標準的連接池,要求:

1:實現(xiàn)dataSource接口。

2:聲明一個集合類用于管理多個連接。

3:必須要擁有一種能力,回收連接。

4:必須要實現(xiàn)一個方法,getConnection以獲取一個連接。

5:實現(xiàn)DataSource接口的類,一般不能擁有static池對象。List.

6:在一個程序中,要求只擁有一個DataSource實例就可以了。

以下是具體的實現(xiàn):


import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.LinkedList;import javax.sql.DataSource;/** * 標準的連接 */public class DBPool implements DataSource  {    //聲明一個池管理對象    PRivate LinkedList<Connection> pool = new LinkedList<Connection>();    //在初始化這個DataSourc的子類時在構(gòu)造方法設(shè)置多個連接    public DBPool(){        try{            Class.forName("com.MySQL.jdbc.Driver");            String url = "jdbc:mysql:///db909?characterEncoding=UTf8";            for(int i=0;i<3;i++){                Connection con = DriverManager.getConnection(url,"root","1234");                //將生成的這個連接。放到pool                pool.add(con);            }        }catch(Exception e){            throw new RuntimeException(e.getMessage(),e);        }    }    public Connection getConnection() throws SQLException {        return pool.removeFirst();    }    ///其他的方法。不實現(xiàn)}

2:實現(xiàn)連接的回收

package cn.itcast.utils;import java.io.PrintWriter;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.LinkedList;import javax.sql.DataSource;/** * 標準的連接 */public class DBPool implements DataSource {    //聲明一個池管理對象    private LinkedList<Connection> pool = new LinkedList<Connection>();    //在初始化這個DataSourc的子類時在構(gòu)造方法設(shè)置多個連接    public DBPool(){         try{            Class.forName("com.mysql.jdbc.Driver");            String url = "jdbc:mysql:///db909?characterEncoding=UTf8";            for(int i=0;i<3;i++){                final Connection con = DriverManager.getConnection(url,"root","1234");                Object proxyedConn =                        Proxy.newProxyInstance(DBPool.class.getClassLoader(),                                 new Class[]{Connection.class},                                new InvocationHandler() {                                    public Object invoke(Object proxyedConnection, Method method, Object[] args)                                            throws Throwable {                                        if(method.getName().equals("close")){                                            synchronized (pool) {                                                 pool.addLast((Connection) proxyedConnection);                                                pool.notify();                                            }                                            return  null;                                        }                                        //目標方法的返回值                                        Object returnValue=method.invoke(con, args);                                         return returnValue;                                    }                                });                pool.add((Connection) proxyedConn);            }        }catch(Exception e){            throw new RuntimeException(e.getMessage(),e);        }    }    public Connection getConnection() throws SQLException {         synchronized (pool) {            if(pool.size()==0){                try {                    pool.wait();                } catch (InterruptedException e) {                    e.printStackTrace();                }                return getConnection();            }            Connection con = pool.removeFirst();            System.err.println("siize:"+pool.size());            return con;        }    }}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 羞羞视频入口 | 中文字幕在线播放视频 | 久草在线手机视频 | 又黄又爽免费无遮挡在线观看 | 国产精品免费久久久久久 | 免费在线观看成人av | 91精品国产91 | 成人午夜免费网站 | 国产影院一区 | 国产精品午夜一区 | 欧美伦理一区二区 | 国产精品久久久久久久久久尿 | 亚洲第一成人在线 | 色毛片 | sesee99| 91午夜在线观看 | 亚洲一区二区中文字幕在线观看 | 爱草成年 | 激情亚洲一区二区三区 | 欧美一级黄 | 黄色av片在线观看 | 91懂色 | 日美黄色片 | 91精品动漫在线观看 | 毛片在哪里看 | 美女污污在线观看 | 国产成人高清在线观看 | 亚洲综合色视频在线观看 | 国产婷婷一区二区三区 | 久久久久国产成人精品亚洲午夜 | 毛片视频大全 | 国产三级三级三级三级 | 午夜精品成人一区二区 | 久久综合爱 | 国产精品久久久久影院老司 | 国产午夜亚洲精品理论片大丰影院 | 新久久久久久 | 国产精品美女久久久久久不卡 | 国产免费v片 | 亚洲男人一区 | 国产精品成人免费一区久久羞羞 |