网站首页 语言 会计 电脑 医学 资格证 职场 文艺体育 范文
当前位置:书香门第 > 计算机 > java语言

多线程的饿汉式和懒汉式

栏目: java语言 / 发布于: / 人气:8.79K

导语:多线程的单例设计模式保证某个类中内存中只有一个对象,分为饿汉式和懒汉式,让我们了解一下吧!

多线程的饿汉式和懒汉式

  (1)饿汉式:

class Single

{

private Single(){}//将构造函数私有化,不让别的`类建立该类对象

private static final Single s=new Single();//自己建立一个对象

public static Single getInstance()//提供一个公共访问方式

{

return s;

}

}

  (2)懒汉式:

class Single

{

private Single(){}

private static Single s;

public static Single getInstance()

{

if(s==null)

s=new Single();

return s;

}

}

饿汉式和懒汉式的区别:

**

饿汉式是类一加载进内存就创建好了对象;

懒汉式则是类加载进内存的时候,对象还没有存在,只有调用了getInstance()方法时,对象才开始创建。

**

懒汉式是延迟加载,如果多个线程同时操作懒汉式时就有可能出现线程安全问题,解决线程安全问题

可以加同步来解决。但是加了同步之后,每一次都要比较锁,效率就变慢了,

所以可以加双重判断来提高程序效率。

如将上述懒汉式的Instance函数改成同步:

public static Single getInstance()

{

if(s==null)

{

synchronized(s)

{

if(s==null)

s=new Single();

}

}

return s;

}