mysql的java连接池,用openSTA测试50人并发访问一万次,没有出现问题,很好用

   1. package dbc; 
   2.  
   3. import java.sql.Connection; 
   4. import java.sql.DriverManager; 
   5. import java.util.ArrayList; 
   6.  
   7. public class DataBaseConnection { 
   8.  
   9.     private static int maxConnectNum = 20; 
  10.  
  11.     private java.sql.Connection conn[] = new Connection[maxConnectNum]; 
  12.  
  13.     private static ArrayList connectPool = new ArrayList(); 
  14.  
  15.     private static int flag = 0; 
  16.  
  17.     public DataBaseConnection() { 
  18.         if (flag == 0) { 
  19.             init(); 
  20.         } 
  21.     } 
  22.  
  23.     private Connection getConnectionFromDatabase() { 
  24.         Connection trueConn = null; 
  25.         try { 
  26.             //Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 
  27.             Class.forName("com.mysql.jdbc.Driver").newInstance(); 
  28.             String url = "jdbc:mysql://localhost:3306/ssk?user=root&password=dzjc&useUnicode=true&characterEncoding=GBK"; 
  29.             trueConn = DriverManager.getConnection(url); 
  30.         } catch (Exception ex) { 
  31.             System.out.println("数据连接出错了:" + ex.toString()); 
  32.         } 
  33.         return trueConn; 
  34.     } 
  35.  
  36.     //这里建立所有的连接; 
  37.     private void init() { 
  38.         for (int i = 0; i < maxConnectNum; i++) { 
  39.             conn[i] = getConnectionFromDatabase(); 
  40.             connectPool.add(i, conn[i]); 
  41.         } 
  42.         flag = 1; 
  43.     } 
  44.  
  45.     //从连接池中取得一个可用的连接 
  46.     public Connection getConnection() { 
  47.         Connection conn = null; 
  48.         if (connectPool.size() == 0) { 
  49.             try { 
  50.                 java.lang.Thread.sleep(1000); 
  51.                 getConnection(); 
  52.             } catch (InterruptedException ex) { 
  53.                 System.out.println("连接全部用光,这里sleep出错了."); 
  54.             } 
  55.         } else { 
  56.             conn = (Connection) connectPool.remove(0); 
  57.         } 
  58.  
  59.         return conn; 
  60.     } 
  61.  
  62.     //提供给外部程序调用,不用的连接放回连接池当中... 
  63.     public boolean release(Connection conn) { 
  64.         return connectPool.add(conn); 
  65.     } 
  66.  
  67.     public static void main(String[] args) { 
  68.     } 
  69. } 

你可能感兴趣的:(java,thread,sql,mysql,jdbc)