美文网首页
java 两种线程安全的单例

java 两种线程安全的单例

作者: Tonki | 来源:发表于2017-02-12 11:24 被阅读0次

一、 volatile和双检锁

public class EventBus {

    //volatile 保证了各个线程的得到的defaultInstance都是最新的
    static volatile EventBus defaultInstance;

    /** Convenience singleton for apps using a process-wide EventBus instance. */
    public static EventBus getDefault() {
        if (defaultInstance == null) {
            synchronized (EventBus.class) {
                if (defaultInstance == null) {//进入同步块后再次判断最新的defaultInstance
                    defaultInstance = new EventBus();
                }
            }
        }
        return defaultInstance;
}

二、 利用静态内部类

public class HttpMethods {

    private HttpMethods(){};

    private static class SingletonHolder{
        private static final HttpMethods INSTANCE = new HttpMethods();
    }

    //获取单例
    public static HttpMethods getInstance(){
        //实例为静态类的静态变量
        return SingletonHolder.INSTANCE;
    }
}

相关文章

  • 单例

    单例,是Java中很重要的一个设计模式。 实现单例是要考虑并发(线程安全)问题的。 如何实现一个线程安全的单例?你...

  • Java 单例模式

    概述 Java中单例模式是一种常见的设计模式,单例模式总共有7种写法。 懒汉,线程不安全 懒汉,线程安全 饿汉 饿...

  • kotlin实现单例

    java实现单例模式 一直习惯于java的写法,java实现单例主要的思想是构造函数私有,然后考虑线程安全,在实现...

  • Kotlin 的单例模式

    Kotlin 的单例模式 1. 在 Java 中的单例模式 懒汉式单例模式,并且是线程安全 2. 在 Kotlin...

  • java单例的几种实现

    以上七种java的单例实现方式。第五种线程安全的单例实现,doublecheck,通过加上volatile,实现真...

  • 单例模式(Singleton)

    一、初始化单例类时即创建单例 饿汉式:(线程安全) 枚举类型:(线程安全) 二、按需、延迟创建单例 懒汉式:(线程...

  • 单例模式的常用实现方式

    单例模式属于最常用的设计模式,Java中有很多实现单例模式的方式,各有其优缺点 实现方式对比 单例实现方式线程安全...

  • java 两种线程安全的单例

    一、 volatile和双检锁 二、 利用静态内部类

  • 单例模式汇总

    Java单例模式 java单例模式是为了让全局只实例化一个对象,常用的方式包括懒汉模式、饿汉模式,考虑到线程安全,...

  • Android:常用的设计模式(单例、建造者、观察者、模板模式、

    单例:常用的有两种写法,① 饿汉式 线程安全,不过类创建时对象实例就创建好了。② 懒汉式 线程不安全,如果加锁...

网友评论

      本文标题:java 两种线程安全的单例

      本文链接:https://www.haomeiwen.com/subject/rylaittx.html