黑马程序员技术交流社区
标题:
单例模式
[打印本页]
作者:
liuqjss
时间:
2016-4-21 08:49
标题:
单例模式
懒汉式和饿汉式分别怎么写
作者:
toukya
时间:
2016-4-21 11:06
饿汉式:先初始化方式,类一进内存就已经创建好了对象。
class SingleMode1
{
private static SingleMode1 s=new SingleMode1();
private SingleMode1(){}
public static SingleMode1 getInstance()
{
return s;
}
}
懒汉式:后初始化方式,对象在方法调用时才初始化,也叫做类的延时加载。
class SingleMode2
{
private static SingleMode2 s=null;
private SingleMode2(){}
//public static synchronized SingleMode2 getInstance()//加锁,,一次只有一个程序在执行;但是程序效率变低了
public static SingleMode2 getInstance()
{
//用多线程解决冲突问题;在讲多线程的时候重点再讲;
if(s==null)
{
synchronized (SingleMode2.class)
{
if(s==null)
s=new SingleMode2();//方法调用时才建立对象
}
}
return s;
}
}
作者:
biu
时间:
2016-4-21 14:33
作者:
菊花爆满山
时间:
2016-4-21 15:00
楼上的已经写出来了
我来说说区别吧
1.饿汉式是静态初始化,随着类的加载就在内存中创建了一个实例,高效,安全,是空间换时间
2.懒汉式是动态初始化,当方法getInstance被加载时,才会在内存中创建一个实例,低效,线程不安全,是时间换空间
作者:
zhoubinjian
时间:
2016-4-21 18:46
学习了,,,,
作者:
小海龙
时间:
2016-4-21 18:56
说的好,单类模式注意多线程应用时的不安全隐患就OK了
作者:
liuqjss
时间:
2016-4-23 10:16
toukya 发表于 2016-4-21 11:06
饿汉式:先初始化方式,类一进内存就已经创建好了对象。
class SingleMode1
{
谢谢了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2