玩转MySQL ----- 自己写的数据库连接池引入线程池

这里继续更JDBC的工具类,应该是V5版本了:

V5版本引入了线程池,为了后面项目service层方便进行事务操作:

创建线程池:
 private static ThreadLocal t=new ThreadLocal();

package cn.hncu.pub;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;


//数据库连接池---v5---用户直接调用con.close()就可以实现还回池中---采用动态代理模式增强conn
public class Conn5Utils {
    //创建一个池
	private static List pool=new ArrayList();
	private static int NUM=3; 
	
	//创建线程池
	private static ThreadLocal t=new ThreadLocal();
	
	
	static{
		
		try {
			Properties p=new Properties();
			p.load(Conn5Utils.class.getClassLoader().getResourceAsStream("jdbc.properties"));
            
			String driver=p.getProperty("driver");
			String url=p.getProperty("url");
			String user=p.getProperty("username");
			String pwd=p.getProperty("password");
			
			Class.forName(driver);
			
			for(int i=0;i

 

测试类:

package cn.hncu.tx;

import java.sql.Connection;

import cn.hncu.pub.Conn5Utils;

public class Conn5UtilsTest {

	public static void main(String[] args) {
		Connection conn = Conn5Utils.getConn();
		Connection conn2 = Conn5Utils.getConn();
		Connection conn3 = new Hello().aa();

		System.out.println(conn);
		System.out.println(conn2);
		System.out.println(conn3);

		new Thread() {
			/*
			 * (non-Javadoc)
			 * 
			 * @see java.lang.Thread#run()
			 */
			@Override
			public void run() {
				System.out.println(">>" + Conn5Utils.getConn());
				Connection con = new Hello().aa();
				System.out.println("con>>" + con);
			}

		}.start();

	}

}

class Hello {
	public Connection aa() {
		return Conn5Utils.getConn();
	}
}

结果:

玩转MySQL ----- 自己写的数据库连接池引入线程池_第1张图片

你可能感兴趣的:(MySQL)