import java.sql.Connection; import java.sql.DriverManager; import java.util.Stack; public class ConnManager { private static final int MIN_CONN = 2; private static final int MAX_CONN = 5; private static final String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=RJ_Thesis"; private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; private static final String USER ="sa"; private static final String PASW= "sa"; private int connAmount = 0; private static Stack<Connection> connStack ; static { connStack = new Stack<Connection>(); try { Class.forName(DRIVER); } catch (ClassNotFoundException e) { e.printStackTrace(); } } private static ConnManager instance; public static synchronized ConnManager getInstance(){ if(null != instance){ return instance; } return new ConnManager(); } private ConnManager(){ for(int i = 0 ; i < MIN_CONN ; i++){ connStack.push(newConnection()); } } public synchronized void freeConnection(Connection con){ connStack.push(con); notifyAll(); } public synchronized Connection getConnection(){ Connection con = null; if(!connStack.isEmpty()){ con = connStack.pop(); }else if(connAmount < MAX_CONN){ con = newConnection(); }else{ try { wait(1000); return getConnection(); } catch (InterruptedException e) { e.printStackTrace(); } } return con; } private Connection newConnection(){ try { Connection connection = DriverManager.getConnection(URL, USER, PASW); ++connAmount; return connection; } catch (Exception e) { e.printStackTrace(); } return null; } }
java jdbc 连接池
经常使用hibernate,在使用hibernate的时候经常使用到DBCP和C3P0的连接池,某天自己突然想起自己来实现一个连接池。test了下,效果还可以,随记录之
猜你喜欢
转载自lieutenantgeneral.iteye.com/blog/2228910
今日推荐
周排行