java 饿汉式和懒汉式_多线程的饿汉式和懒汉式

多线程的饿汉式和懒汉式

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

(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(Single.class)

{

if(s==null)

s=new Single();

}

}

return s;

}

【多线程的饿汉式和懒汉式】相关文章:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值