Private static final EagerSingleton m_instance=new EagerSingleton();
Private EagerSingleton(){}
Public static EagerSingleton getInstance()
{
Return m_instance;
}
l 在这个类被加载时,静态变量 m_Instance会被初始化,此时类的私有构造器会被调用。这时候,单例类的惟一实例就被 创建出来了。
l Java语言中单例类的—个最重要的特点是类的构造于是私有的,从而避免外界利用构造子直接创建出任意多的实例。
l 值得指出的是,由于构造于是私有的,因此此类不能被继承。
懒汉式单例类
Public class LazySingleton
{
Private Static LazySingleton
m_instance=null;
}
Private LazySingleton(){}
Synchronized public static LazySingleton
getInstance()
{
If(m_instance==null)
{
m_instance=new LazySingleton();
}
Return m_instance;
}
l 静态工场方法使用了同步化, 以处理多线程环境。
l 单从资源利用效率角度来讲, 这个比懒汉式单例类稍差些
l 从速度和反应时间角度来讲,则比懒汉式单例类稍好。
l 然而,懒汉式单例类在实例化时,必须处理好在多个线程同时首次引用此类时的访问限制问题,特别是当单例类作为资源控制器在实例化时必然涉及资源初始化.而资源初始
化很有可能耗费时问。这意味着出现多线程同时首次引用此类的几率变得较大。