当前位置: 首页> 学习园地

新mg电子游戏手机版实训-思想过度-连接池(三)-哈尔滨Java培训

2017-12-11 10:55:44更新

哈尔滨Java培训

思想过度-连接池(三)-模拟连接池进阶

 

//sun公司开发一套连接池的接口规范DataSource,自定义的连接池,要实现这个规范

//这回实现连接池,使用的是实现sun公司的接口

public class MyDataSource implements DataSource{

// 创建一个连接的池子--集合,线程安全的问题

private static LinkedList<Connection> pool = (LinkedList<Connection>) Collections

.synchronizedList(new LinkedList<Connection>());

 

// 在连接池中初始化10个连接

static {

try {

for (int i = 0; i < 10; i++) {

Connection conn = DBUtil.getConnection();

pool.add(conn);

}

} catch (Exception e) {

// 将异常向上抛

throw new ExceptionInInitializerError("初始化连接池失败!");

}

}

 

@Override

public Connection getConnection() throws SQLException {

Connection conn = null;

if(pool.size()>0){ //说明池子里还有连接

  conn =  pool.removeFirst();  //移除并返回对象

  return conn;

}else{

  throw new RuntimeException("服务器正忙.......");

  //服务器正忙的解决思路:

  //1.等待

  //2.等待超时新创建一个连接用DBUtil产生,用完之后,不用交回池,真的close()

}

}

 

//释放资源,把连接还回池中

public static void release(Connection conn){

pool.addLast(conn);

}

 

//下面的方法都是DataSource接口中定义的,这里面都要实现

@Override

public PrintWriter getLogWriter() throws SQLException {

// TODO Auto-generated method stub

return null;

}

}

哈尔滨Java培训