日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

java 线程 连接池_java程序实现线程连接池功能

發布時間:2023/11/27 生活经验 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 线程 连接池_java程序实现线程连接池功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下面是以前學java 的時候寫的一個實現,沒有考慮很多,比如同步處理等等。懶得改,你就看看吧。

package com.wangjia.tools;

import java.io.Serializable;

import java.sql.*;

import java.util.*;

/**

*數據庫連接池的簡單實現

* @author wangjia

* @version 1.0

*@serial 2301410997974776106L

*/

public class DbConn implements Serializable{

/**

*

*/

private static final long serialVersionUID = 2301410997974776106L;

private static List connList=new ArrayList();

//private static String driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";//sql2000

private static String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";//sql2005

private static String url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Forum";

private static String userName="sa";

private static String password="sa";

private static int maxConn=20;

private static int minConn=5;

private static int usedConn=0;

private static DbConn dbconn=null;

// private static int flag=1;

/**

* 設置數據庫連接的驅動

* @param driver數據庫連接的驅動
例如:"com.microsoft.sqlserver.jdbc.SQLServerDriver"

*/

public static void setDriver(String driver) {

DbConn.driver = driver;

}

/**

* 設置數據庫連接池的最小數量

* @param maxConn 數據庫連接池的最小數量

*/

public static void setMaxConn(int maxConn) {

DbConn.maxConn = maxConn;

}

/**

* 設置數據庫連接池的最大數量

* @param minConn 數據庫連接池的最大數量

*/

public static void setMinConn(int minConn) {

DbConn.minConn = minConn;

}

/**

* 設置數據庫連接的URL

* @param url 數據庫連接的URL,包括數據庫的名稱
例如: "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=master"

*/

public static void setUrl(String url) {

DbConn.url = url;

}

private DbConn() throws MyException{

try{

Class.forName(driver);

for(int i=0;i

connList.add(DriverManager.getConnection(url,userName.toString(),password.toString()));

}

}catch(ClassNotFoundException e){

throw new MyException("請設置正確的數據庫連接驅動!\nusing: DbConn.setDriver(String driver)");

}catch(SQLException e){

throw new MyException("請設置正確的數據庫連接URL以及用于連接的用戶名和密碼!\n" +

"using: DbConn.setUrl(String url),DbConn.setUserName(String userName),DbConn.setPassword(String password)");

}

}

/**

* 用于得到DbConn對象

* @return 返回一個DbConn對像

*/

public static Connection getConn() throws MyException{

// flag++;

if(dbconn==null)dbconn=new DbConn();

// System.out.println("falg="+flag);

// System.out.println("usedConn="+usedConn);

if(connList.size()==0){

throw new MyException("沒有正確的設置相關信息,以至連接池未初始化");

}

if(usedConn==maxConn){

Thread thread=new Thread(new Runnable(){

@SuppressWarnings("static-access")

public void run() {

if(usedConn

try {

try {

Thread.currentThread().sleep(2000);

} catch (InterruptedException e) {

e.printStackTrace();

}

getConn();

} catch (MyException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

});

thread.start();

}

if(usedConn>=minConn&&usedConn

try {

connList.add(DriverManager.getConnection(url,userName.toString(),password.toString()));

} catch (SQLException e) {

}

return connList.get(usedConn++);

}

if(usedConn<5){

return connList.get(usedConn++);

}

return null;

}

public static void close(){

try {

if(usedConn>5)

connList.get(--usedConn).close();

else usedConn--;

} catch (SQLException e) {

// TODO 自動生成 catch 塊

e.printStackTrace();

}

}

/**

* 設置用于連接數據庫的密碼

* @param password 用于連接數據庫的密碼

*/

public static void setPassword(String password) {

DbConn.password = password;

}

/**

* 設置用于連接數據庫的用戶名

* @param userName 用于連接數據庫的用戶名

*/

public static void setUserName(String userName) {

DbConn.userName = userName;

}

}

在項目中用到連接池的話,一般會直接使用已有的開源連接池實現,比如用 apache 的common-dbcp.jar和common-pool.jar 相結合,很少去自己實現。

總結

以上是生活随笔為你收集整理的java 线程 连接池_java程序实现线程连接池功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。