网上好多介绍ThreadLocal的帖子。
只是我一直不明白这样的一个问题:
在同一线程中,如果要用到两次Connection,要到第一次之后就将Connection关闭,
那么第二次使用Connection的时候不是还得重新去取得连接么,
用ThreadLocal的优势又体现在什么地方呢?我自己写的sample:
public static void main(String [] args){
Connection conn = null;
try{
conn = DBManager.getSSCon();
System.out.println("... conn hashcode: " + conn.hashCode());
String sqlStr = "insert into dd_user(user_id,name,sex,age) values('4028d272059a4dee01059a4df3110005','name','M',10)";
executeUpdate(conn,sqlStr);
DBManager.closeConn();
sqlStr = "insert into dd_user(user_id,name,sex,age) values('4028d272059a4dee01059a4df3110006','name','M',10)";
conn = DBManager.getSSCon();
System.out.println("... conn hashcode: " + conn.hashCode());
executeUpdate(conn,sqlStr);
}catch(SQLException e){
e.printStackTrace();
}finally{
closeConn(conn);
}
System.out.println(" the end !");
}======================================打印出来的Connection的hashcode是不一样的,,,
只是我一直不明白这样的一个问题:
在同一线程中,如果要用到两次Connection,要到第一次之后就将Connection关闭,
那么第二次使用Connection的时候不是还得重新去取得连接么,
用ThreadLocal的优势又体现在什么地方呢?我自己写的sample:
public static void main(String [] args){
Connection conn = null;
try{
conn = DBManager.getSSCon();
System.out.println("... conn hashcode: " + conn.hashCode());
String sqlStr = "insert into dd_user(user_id,name,sex,age) values('4028d272059a4dee01059a4df3110005','name','M',10)";
executeUpdate(conn,sqlStr);
DBManager.closeConn();
sqlStr = "insert into dd_user(user_id,name,sex,age) values('4028d272059a4dee01059a4df3110006','name','M',10)";
conn = DBManager.getSSCon();
System.out.println("... conn hashcode: " + conn.hashCode());
executeUpdate(conn,sqlStr);
}catch(SQLException e){
e.printStackTrace();
}finally{
closeConn(conn);
}
System.out.println(" the end !");
}======================================打印出来的Connection的hashcode是不一样的,,,
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货