单例的正确姿势

Posted 凤雏小呆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例的正确姿势相关的知识,希望对你有一定的参考价值。

1.加锁延迟性的懒汉单例模式

  单例对象需要用volatile去修饰,可以保证对象是公用的;

  初始化单例对象的方法,需要在方法内部判空后进行加锁再次判断空 new 对象的方式。

 

  优点:

    确保单例使用时,不会出现未初始化成功的情况(多线程频发并发去拿单例对象可能会造成对象没有初始化成功但不为null的情况)

  缺点:

    这是线程不安全的初始化单例对象的方法,因为不安全所以需要给变量加上共享标识,并且在初始化时加锁再次判定

2.静态内部类初始化外部类对象的单例模式

  通过静态内部类的静态方法,去new外部类的单例对象,可以真正意义上保证外部类单例对象正确存在,这也是线程安全的单例方法

以上是关于单例的正确姿势的主要内容,如果未能解决你的问题,请参考以下文章

Go语言实现单例的正确姿势

单例模式在项目中正确的使用姿势---java

synchronized使用的正确姿势

synchronized使用的正确姿势

synchronized使用的正确姿势

Unittest组织用例的姿势