首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

单例模式中的双重锁定 及新式单例设计

2012-11-08 
单例模式中的双重锁定 及新型单例设计在单例模式中有一种延时实例化方法,当调用get方法获取单例时,判断是

单例模式中的双重锁定 及新型单例设计
在单例模式中有一种延时实例化方法,
当调用get方法获取单例时,判断是否已经实例化,如果没有,则创建该实例并返回。如果有直接返回。
在这个过程中如果考虑多线程并发问题,我们需要用双重锁定来保证该实例的单一性。

public class Singleton  {private Singleton (){}private static Singleton  main;/** * 双重锁定 * @return */public static Singleton  get(){if(main==null){synchronized (Singleton.class) {if(main==null){main=new Singleton();}}}return main;}public static void main(String[] args) throws Exception{System.out.println(Singleton.get().toString());} @Overridepublic String toString() {return "I am Singleton ";}}


单例模式的另一种实例化方法是在静态代码块中直接创建实例,这样就不需要考虑多线程的问题了。
public class Singleton  {private Singleton (){}private static Singleton  main=new Singleton();}


今天读到一篇创新型的单例设计,记录一下
public class Singleton {       static class SingletonHolder {       static Singleton instance = new Singleton();     }       public static Singleton getInstance() {       return SingletonHolder.instance;     }     }  

热点排行