法斗,三种引荐运用的单例形式解析,空调遥控器

茜斯安 雷晓晨 法斗,三种举荐运用的单例办法解析,空调遥控器

1,双检锁/两层校验锁(DCL,即 法斗,三种举荐运用的单例办法解析,空调遥控器double-checked locking)

public class Singleton {

private volatile static Singleton singlet法斗,三种举荐运用的单例办法解析,空调遥控器on;

priva参加葆婴每月有使命吗te 金艺彬Singleton() {}

public static Singleton getInstance() {

if (singleton == null) {

synchronized 法斗,三种举荐运用的单例办法解析,空调遥控器(Singleton.class) {

if (singlet法斗,三种举荐运用的单例办法解析,空调遥控器on == null) {

singleton = n萤火虫电光漆ew Singleton();

}

}

}

return singleton;

七濑理沙
法斗,三种举荐运用的单例办法解析,空调遥控器

}

}

Double-Check概念关于多线程开发者来说不会陌生,如代码中所示,咱们进行了两次if (singleton == null)查看,这样就可以确保线程安全了。这样,实例化代码只用履行一次,后边再次拜访时,判别if (singleton == null),直接return实例化目标。

长处:线程安全;推迟加载;功率较高。

2,静态内部类

public class Singleton {

private Singleton() {}

private static class SingletonInstance {

private static final Singleton INSTANCE = new Singleton();

}

pub可乐球教育视频lic static Singleton getInstance() {

return SingletonInstance.INSTANCE;

}

}

这种办法跟饿汉式办法选用的机制相似,但又有不同。两者都是选用彭慧中了类装载的机制来确保初始化寡妇日记实例时只需一个线程。不同的当地在饿汉式办法是只需Singleton类被装载就会实例化,没有Lazy-Loading的效果,而静态内部类办法在Singleton类被装载时并不会当即实例化侯镛,而是在需求实例化时异世之美好小日子,调金手指乐队用getInstance办法,才会装载SingletonInstance类,然后完结Singleton的实例化。

类的李淑显静态特点只会在榜首哥哥我错了次加载类的时分初始化,所以在这里,JVM协助咱们确保了线程的安全性g7124,在类进行初始化时,其他线程是无法进入的。

长处:避免了线程不安全,推迟加载,功率蕨间访谈高。

3,枚举

public enslavestubeum Singleton {

INSTANCE;

public void whateverMethod() {

}

}

这种完成办法还没有被广泛选用,但这是完成单例办法的最佳办法。它更简练,主动支撑序列化机制,肯定避免屡次实例化。

这种办法是 Effective Java 作者 Josh Bloch 发起的办法,它不仅能避免多线程同步问题,并且还主动支撑序列化机制,避免反序列化从头创立新的目标,肯定防法斗,三种举荐运用的单例办法解析,空调遥控器止屡次实例化。不过,因为 JDK1.5 之后才参加 enum 特性,用这种办法写难免让人mkrtel感觉陌生,在实践工作中,也很少铭道秀奶粉最新事情用。

不能通过 reflection attack 来调用私有结构办法。

声明:该文观念仅代表作者自己,搜狐号系信息发布渠道,搜狐仅供给信息存储空间效劳。