蔡先生论道大数据之一 , 大数据由来
2014-06-30 18:03
176 查看
框架内核 使用线程池技术 和线程单例技术
package utils;
import java.sql.Connection;
import java.util.Properties;
import org.apache.commons.dbcp.BasicDataSource;
public class DBUtils {
private static String driver;
private static String url;
private static String user;
private static String password;
private static BasicDataSource ds;//连接池
private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();///实现线程单例 本质上是map 一个Thread 对应一个value(Connection)
static {
try {
Properties props = new Properties();
// 获得配置文件中的信息 反射机制
props.load(DBUtils.class.getClassLoader().getResourceAsStream(
"utils/db.properties"));
driver = props.getProperty("driver");
url = props.getProperty("url");
user = props.getProperty("user");
password = props.getProperty("password");
ds = new BasicDataSource();//创建线程池对象
ds.setDriverClassName(driver);//给线程池做配置
ds.setUrl(url);
ds.setUsername(user);
ds.setPassword(password);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
public static Connection getConnection() throws Exception {
// Connection con = ds.getConnection();
Connection con = tl.get();///取得当前线程的连接
if (con == null) {/// 如果线程池里没有该链接
con = ds.getConnection(); ///从连接池里获得连接
tl.set(con);//放入连接池中
}
return con;
}
public static void closeConnection() throws Exception{
Connection con = tl.get();
if (con != null) {
con.close();//放回到连接池中 而并不是将连接关闭
tl.set(null);/// 取消当前线程绑定的连接
}
}
public static void main(String[] args) throws Exception {
Connection con = getConnection();
System.out.println(con.getClass().getName());
}
}
package utils;
import java.sql.Connection;
import java.util.Properties;
import org.apache.commons.dbcp.BasicDataSource;
public class DBUtils {
private static String driver;
private static String url;
private static String user;
private static String password;
private static BasicDataSource ds;//连接池
private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();///实现线程单例 本质上是map 一个Thread 对应一个value(Connection)
static {
try {
Properties props = new Properties();
// 获得配置文件中的信息 反射机制
props.load(DBUtils.class.getClassLoader().getResourceAsStream(
"utils/db.properties"));
driver = props.getProperty("driver");
url = props.getProperty("url");
user = props.getProperty("user");
password = props.getProperty("password");
ds = new BasicDataSource();//创建线程池对象
ds.setDriverClassName(driver);//给线程池做配置
ds.setUrl(url);
ds.setUsername(user);
ds.setPassword(password);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
public static Connection getConnection() throws Exception {
// Connection con = ds.getConnection();
Connection con = tl.get();///取得当前线程的连接
if (con == null) {/// 如果线程池里没有该链接
con = ds.getConnection(); ///从连接池里获得连接
tl.set(con);//放入连接池中
}
return con;
}
public static void closeConnection() throws Exception{
Connection con = tl.get();
if (con != null) {
con.close();//放回到连接池中 而并不是将连接关闭
tl.set(null);/// 取消当前线程绑定的连接
}
}
public static void main(String[] args) throws Exception {
Connection con = getConnection();
System.out.println(con.getClass().getName());
}
}
相关文章推荐
- 蔡先生论道大数据之: 得"脑残"者得"天下"
- 蔡先生论道大数据之十二:案例分析(1) 打败猜测和误解
- 蔡先生论道大数据十九:王羲之与大数据
- 蔡先生论道大数据之十三:预测企业未来
- 蔡先生论道大数据之(十六) :穷则思变
- 蔡先生论道大数据十八・:本是同根生相煎何太急
- 蔡先生论道大数据之五 : "性别"不重要
- 蔡先生论道大数据之九: 要的就是"快"
- 蔡先生论道大数据之十一: 企业如何入手大数据战略(2)
- 蔡先生论道大数据之六 : 打破对“精准性”的执着
- 蔡先生论道大数据之二 , 国外互联网公司的大数据应用
- 蔡先生论道大数据之四, 中国公司和国外公司在大数据应用上的区别
- 蔡先生论道大数据之十四:案例分析(2) 国足也可以进世界杯
- 蔡先生论道大数据之(十五) :什么是数据化运营?
- 蔡先生论道大数据之七 : 营销也玩"连连看"
- 蔡先生论道大数据之八: 让他在看小说的时候, 看到喜欢的汽车
- 蔡先生论道大数据之十: 企业如何入手大数据战略(1)
- 蔡先生论道大数据之(十七) :全民动员
- 蔡先生论道大数据之三 , 国内互联网公司的大数据应用
- 数据挖掘技术的由来