第一个相当于工具类
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.LinkedList;
import java.util.Properties;
//数据库连接池的原理:充当缓存
public class SimpleConnectionPool {
private static String className;
private static String url;
private static String user;
private static String password;
//存储连接池
private static LinkedList<Connection> pool = new LinkedList<Connection>();
static
{
try {
InputStream in = SimpleConnectionPool.class.getClassLoader().getResourceAsStream("prop.properties");
Properties pop = new Properties();
pop.load(in);
className = pop.getProperty("className");
url = pop.getProperty("url");
user =pop.getProperty("user");
password = pop.getProperty("password");
Class.forName(className);
//创建10个连接池
// for(int i=0; i<10 ;i++)
// {
// Connection conn = DriverManager.getConnection(url, user, password);
// pool.add(conn);
// }
// System.out.println("初始化连接池有:"+pool.size());
// for(Connection c: pool)
// {
// System.out.println(c);
// }
} catch (Exception e) {
e.printStackTrace();
}
}
public synchronized static Connection getConnection()//synchronized将类锁定,一次一个
{
if(pool.size()>0) //从池中拿去connection
{
Connection conn = pool.remove();
// System.out.println("刚拿出去的是 "+conn);
// System.out.println("池中还有:"+pool.size());
// for(Connection c:pool)
// {
// System.out.println(c);
// }
return conn;
}else
{
System.out.println("服务器忙!");
return null;
}
}
public static void release(Connection conn)
{
pool.add(conn); //用完将connection还回池中
// System.out.println("放回池中的是 "+conn);
// System.out.println("池中还有"+pool.size());
// for(Connection c:pool)
// {
// System.out.println(c);
// }
}
}
第二、调用工具类
package com.liuzhen.jdbc.pool;
import java.sql.Connection;
public class SimpleConnectionPoolClient {
public static void main(String[] args) {
Connection c1 = SimpleConnectionPool.getConnection();
//c1对dao层操作
Connection c2 = SimpleConnectionPool.getConnection();
//c2对dao层操作
Connection c3 = SimpleConnectionPool.getConnection();
//c3对dao层操作
Connection c4 = SimpleConnectionPool.getConnection();
//c4对dao层操作
SimpleConnectionPool.release(c3);
SimpleConnectionPool.release(c1);
SimpleConnectionPool.release(c4);
SimpleConnectionPool.release(c2);
}
}
三、配置文件 prop.properties
className = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/test
user = root
password =****