单例的正确姿势

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

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

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

 

  优点:

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

  缺点:

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

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

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

posted @ 2017-06-02 15:56  凤雏小呆  阅读(564)  评论(0编辑  收藏  举报