java--写一个连接池

写一个连接池  

2011-05-18 21:04:39|  分类: corejava |  标签:写一个连接池   |字号 订阅

package webgame.db;

import java.sql.*;
import java.util.*;


public class DataBase{

  private static int maxConnectNum = 20;
  private java.sql.Connection conn[]=new Connection[maxConnectNum];
  private static ArrayList connectPool = new ArrayList();
  private static int flag = 0;


  public DataBase() {
    if(flag == 0){
      init();
    }
  }

  private Connection getConnectionFromDatabase(){
    Connection trueConn = null;
    try {
      //Class.forName("org.gjt.mm.mysql.Driver").newInstance();
      Class.forName("com.mysql.jdbc.Driver").newInstance();
      String url ="jdbc:mysql://localhost:3306/webgame?user=root&password=&useUnicode=true&characterEncoding=GBK";
      trueConn= DriverManager.getConnection(url);
    }
    catch (Exception ex) {
      System.out.println("数据连接出错了:" + ex.toString());
    }
    return trueConn;
  }

  //这里建立所有的连接;
  private void init(){
    for(int i=0;i<maxConnectNum;i++){
      conn[i] = getConnectionFromDatabase();
      connectPool.add(i,conn[i]);
    }
    flag = 1;
  }

 


  //从连接池中取得一个可用的连接
  public Connection getConnection(){
    Connection conn = null;
    if(connectPool.size()==0){
      try {
        java.lang.Thread.sleep(1000);
        getConnection();
      }
      catch (InterruptedException ex) {
        System.out.println("连接全部用光,这里sleep出错了.");
      }
    }else{
      conn =  (Connection)connectPool.remove(0);
    }

    return conn;
  }

  //提供给外部程序调用,不用的连接放回连接池当中...
  public boolean release(Connection conn){
    return connectPool.add(conn);
  }


  public static void main(String[] args)
  {
  }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值