读书人

对于单例模式的1点想法

发布时间: 2012-09-01 09:33:02 作者: rapoo

对于单例模式的一点想法
单例模式很普遍,对于Spring的实现机制不清楚,单就Java语言上的实现机制来讨论。
虽然简单,但要获得一个高性能且线程安全的单例确不简单。
最简单的、成熟的单例实现有如下两种:
1.

private static int hasInitialized=0;   private static Singleton INSTANCE;   public static Singleton getInstance(){     if(hasInitialized==0){       synchronized(Singelton.class){         //Double checking         if(hasInitialized==0){           INSTANCE=new Singleton();           hasInitialized=1;         }       }     }   } 


区别在于:
以hasInitialized==0来判断是否初始化完成,而在NSTANCE=new Singleton();之后才赋值以确认初始化完成。
这样不是既可保持高性能(绝大部分情况下没有锁,不进入需同步的块)、又可保证线程安全么?

读书人网 >软件架构设计

热点推荐