首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

断开连接时的线程安全有关问题

2013-03-21 
断开连接时的线程安全问题try{connds.getConnection()stmtconn.createstatement()rsstmt.executeQuer

断开连接时的线程安全问题


try{
conn=ds.getConnection();
stmt=conn.createstatement();
rs=stmt.executeQuery("");
......

rs.close();//-----------------1
rs=null;
stmt.close();
stmt=null;
conn.close();
conn=null;//------------------1
}
catch(Exception e){
....}
finally{//--------------------2
if(rs!=null){
try{
rs.close();}
catch(Exception e){...}
rs=null;
 }
if(stmt!=null){
try{
stmt.close();}
catch(Exception e){...}
stmt=null;
 }
if(conn!=null){
try{
conn.close();}
catch(Exception e){...}
conn=null;
 }---------------------------2
}


困惑:
我怎么觉得1处的三个close是多余的,反正finally总是执行的,为什么不单留下finally里的处理。
在1处处理一下的目的是神马? 线程安全
[解决办法]
太多鱼了吧。。没必要的
[解决办法]
貌似try中的close是多余的
[解决办法]
说明你看的那书也不咋地。。。
[解决办法]
如果finally反正都要执行的话,try里头的close完全可以不用啊
[解决办法]
同意,确实多余
[解决办法]
还在入门阶段,加油吧
[解决办法]
引用:
引用:貌似try中的close是多余的你的意思是说直接赋值null,然后就被自动回收了?

没,我是说整个
rs.close();//-----------------1
rs=null;
stmt.close();
stmt=null;
conn.close();
conn=null;//------------------1
部分是多余的

因为与finally中重复了

但如果说用=null代替close方法,还要研究一下,close方法关闭的资源可能不止它自身对象

热点排行