/*
饿汉式
先初始化对象
Single类一进入内存,就已经创建好了对象
*/
class Single
{
private Single(){}
private static Single s = new Single();
public static Single GetInstance()
{
return s;
}
}
*/
class Single1
{
private Single(){}
private static Single s = null;
public static Single GetInstance()
{
if(s==null)
{
synchronized(Single.class)//线程同步,防止创建多个对象
{
if(s==null)
s = new Single();
}
}
return s;
}
}
第二种方式是第一次判断锁后 对象被建立 之后会先判断对象是否为空 若为空 后面的锁就不用判断了, 这样效率比第一种高
public static Single GetInstance()
{
if(s==null)
{
synchronized(Single.class)
{
if(s==null)
s = new Single();
}
}
return s;
}
开发应用中 一般使用饿汉式。。。
希望对你有所帮助。作者: 黄炳期 时间: 2013-9-28 12:27
如果提问得到解答,请及时编辑帖子,修改主题至“提问结束”。作者: 咕咕猫 时间: 2013-9-28 12:47
饿汉式:single类一进内存,就已经创建好对象。
class Student
{
private int age;
private Student (){}
private static Student s = new Student();
public static Student getStudeng()
{
return s;
}
public void setAge(int age)
{
this.age = age;
}
public int getAge()
{
return age;
}
}
单例设计模式方法二:懒汉式
对象是方法被调用时,才初始化,也叫做对象的延时加载
single类进内存,对象还没有存在,只有调用getInstance方法时才建立对象。
class Single
{
private static Single s =null;
private Single(){}
public static Single getInstance()
{
if(s==null)//因为cpu是随机执行程序的所以会有安全隐患。
s =new Single();
return s;
}
}
多线程之后给出解决方案,设置同步即可
class Single
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if (s==null)
{
synchronized(Single.class)//该类对应的字节码文件对象
{
if (s==null)
{
s=new Single;
return s;
}
}
}
}
}