class DLMODETest
{
public static void main(String[] args)
{
new DLTest().show();
System.out.println(Single2.getInstance());
}
}
class DLTest
{
static DLTest t = new DLTest();
public void show()
{
System.out.println("单例设计模式测试!");
}
}
区别:
1,类加载时
饿汉式:直接在内存中建立对象.
懒汉式:只建立引用。并未创建对象。
2,多线程并发时:懒汉式会出现安全问题。
为了保证对象的唯一,需要加入一个关键字:synchronized,但是该关键字会降低效率.
所以建议使用饿汉式。
class Single1 //饿汉式单例
{
private static Single1 s = new Single1();
private Single1(){};
public static Single1 getInstance()
{
return s;
}
}
class Single2 //懒汉式单例
{
private static Single2 s = null;
private Single2(){};
public static synchronized Single2 getInstance()
{
if (s == null)
{
s = new Single2();
}
return s;
}
}