论坛首页 入门技术论坛

我的处女贴:连接池释放连接异常!

浏览 9958 次
该帖已经被评为新手帖
作者 正文
   发表时间:2006-11-29  
DataSource是一个工厂,每次获取都要创建N个Connection,而你每次getConnection都返回一个新的DataSource,结果可想而知……
0 请登录后投票
   发表时间:2006-11-29  
static ds
0 请登录后投票
   发表时间:2006-11-30  
多谢“unifly”和“抛出异常的爱”的回复,看到大家一致的解决方案,我的这个帖子被踢到新手区也是理所当然的啦,我在想,是不是把DataSource再用一个单例类来管理,形成一个双精度的单例模式是不是应该要更好一些阿
0 请登录后投票
   发表时间:2006-11-30  
理由何在?
0 请登录后投票
   发表时间:2006-11-30  
deafwolf 写道
理由何在?
因为就算这个类已经是单例了,但是一个实例在多线程的情况下也有可能产生多个DataSource对象吧。
0 请登录后投票
   发表时间:2006-11-30  


多线程你加锁啊,再包一层就能处理多线程么
0 请登录后投票
   发表时间:2006-11-30  
方法一用单例..
方法二用池
才能不溢出
PS:你用的单例是错的...
0 请登录后投票
   发表时间:2006-11-30  
抛出异常的爱 写道
方法一用单例..
方法二用池
才能不溢出
PS:你用的单例是错的...
单例是错的??呵呵,那就请给兄弟一点明示了
0 请登录后投票
   发表时间:2006-11-30  
deafwolf 写道
抱歉,我没从你的代码中看出单态的所在
对于公用的连接类,单态的应该是类里的DS,而不是对这个类加锁

public class ConnManager{
  private static DataSource dataSource=null;
  private ConnManager(){};
  public static Connection getConnection(){
    if(dataSource==null){
      dataSource=...;
    }
    return dataSource.getConnection();
  }
}



这个是正确的单例...

单例特点
1static DataSource (静态变量)
2  private ConnManager(){};(私有构造器)
3  public static Connection getConnection(静态公开的得到连接的方法)
2 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics