首页Java基础Java源码Java框架设计模式JavaEEJava Web开发视频教程

您现在的位置:首页 >

设计模式

关注我们

优就业官方微信
优就业官方微信扫描二维码,即可与小
U亲密互动
优就业官方微博
优就业官方微博扫码关注,更有精彩活动
等你参与
  • 优就业官方QQ号

    优就业官方QQ号

    一键加好友
  • 咨询电话:( 9:00-22:00 )

    400-650-7353

Java单例模式的几种实现

2017-12-12 11:46:34

懒汉模式

优点:第一次调用才初始化,避免内存浪费。

缺点:必须加锁synchronized 才能保证单例,(如果两个线程同时调用getInstance方法,会chuxia)但加锁会影响效率。

public class Singleton {

//注意 分布式系统中慎用 多线程同步 构造函数私有化

private static volatile Singleton st;

private Singleton (){}

public static Singleton getInstance() {

if (null == st) {

synchronized (Singleton.class) {

if (st == null) {

st = new Singleton();

return st;

}

}

}

return st;

}

}

Java单例模式的几种实现

饿汉式单例

优点:没有加锁,执行效率会提高。

缺点:类加载时就初始化,浪费内存

public class Singleton {

private static final Singleton SINGLETON = new Singleton();

private Singleton() {} //此类不能被实例化

public static synchronized Singleton getInstance() {

return SINGLETON;

}

登记式模式(holder)

内部类只有点,是最好的单例模式。

public class Singleton {

private Singleton() {} //构造方法是私有的,从而避免外界利用构造方法直接创建任意多实例。

public static Singleton getInstance() {

return Holder.SINGLETON;

}

//使用内部类嵌套类的对象,并不需要其外围类的对象。 即它可以不依赖于外部类实例被实例化。

private static class Holder {

private static final Singleton SINGLETON = new Singleton();

}

免责声明:本文来源于网络,由网友提供或网络搜集,仅供个人交流学习参考使用,不涉及商业盈利目的。如有版权问题,请联系本站管理员予以更改或删除。谢谢合作!

下一篇:第一页

上一篇:Java工厂方法模式

猜你喜欢

 
 
咨询中心
优就业微信扫一扫
微信扫一扫

400-650-7353

加入官方微博