public class DBPool {
private static String driver = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/test";
private static String dbusername = "root";
private static String dbpassword = "root";
private static DBPool pool = null;
Connection conn = null;
private static BoneCPDataSource bcpds = null;
private DBPool(){
try{
bcpds = new BoneCPDataSource();
bcpds.setDriverClass(driver);
bcpds.setJdbcUrl(url);
bcpds.setUsername(dbusername);
bcpds.setPassword(dbpassword);
bcpds.setAcquireIncrement(1);
bcpds.setAcquireRetryDelay(10000);
bcpds.setIdleConnectionTestPeriod(100);
bcpds.setMinConnectionsPerPartition(2);
bcpds.setMaxConnectionsPerPartition(20);
bcpds.setPartitionCount(2);
} catch(Exception e) {
e.printStackTrace();
}
}
public static DBPool getInstance(){
if(pool == null){
pool = new DBPool();
}
return pool;
}
public Connection getConnection(){
try {
conn = bcpds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
public static void main(String[] args){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs= null;
try{
/*long tb = System.currentTimeMillis();
for(int i=0; i<100;i++){
conn = MysqlDBCONN.getInstance().getConnection();
}
System.out.println(System.currentTimeMillis()-tb);
*/
long tb1 = System.currentTimeMillis();
for(int i=0; i<100;i++){
conn = DBPool.getInstance().getConnection();
}
conn.close();
System.out.println(System.currentTimeMillis()-tb1);
} catch (Exception e) {
e.printStackTrace();
} finally {
MysqlDBCONN.close(conn, ps, rs);
}
测试程序第一个正常,第二遍的时候就停在那,同步?发生死锁了?
请问什么原因,上面的代码没逻辑上没有问题啊。