首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

单例设计方式 数据库连接实际应用

2012-08-31 
单例设计模式 数据库连接实际应用为了解决数据库连接池多线高并发的问题 特应用单例高并发 处理代码如下pu

单例设计模式 数据库连接实际应用
为了解决数据库连接池多线高并发的问题 特应用单例高并发 处理代码如下

public class DBConnection{ private DBConnection{}/** *数据库链接*/private volatile static Connection conn=null;public static Connection getConnection(){ if(conn==null){   synchronized (PMSServerContext.class) {   if(conn == null)      conn = DBConnection.getImplementation().getConnection();   } }}}


在getConnection()的方法中首先判断实例是否被创建,如果没有被创建,首先使用同步代码块 synchronized,在同步代码块里面我们还要再次判断实例是否被创建。这是因为如果第二次没有检查,线程同时进入方法体他们都检测conn为null,不管哪个线程先占据同步锁创建实例对象,都不会影响例外一个线程创建实例对象,所以我们在同步代码块中第二次判读该对象是否已经被创建。

第二属性conn是被volatile修饰的,因为它具有 synchronized的可见性特点,也就是说线程能够自动发现volatile的最新值。这样,如果conn实例化成功,其他线程便立即发现。

热点排行