瞎扯设计模式1:单例模式 饿汉模式 懒汉模式 线程安全的单例 singleton 设计模式 java

【原创声明】此文为本人原创,欢迎转载,转载请注明出处,作者链接~

单例很常用,面试也经常被问,如:不用自定义锁怎么实现线程安全的单例?

下面我将分别介绍饿汉、懒汉的单例(都是线程安全的):

饿汉单例:

package com.dayuanit.utils.hungry;

public class Singleton {
    private static final Singleton instance = new Singleton();
    private Singleton(){}
    public static Singleton getInstance(){
        return instance;
    }
}

懒汉单例:

package com.dayuanit.utils.lazy;

public class Singleton {
    private static volatile Singleton instance;
    private Singleton(){}
    public static Singleton getInstance(){
        if (null == instance){
            synchronized (Singleton.class){
                if (null == instance){
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

 

上述两种单例可以用如下方式检验是否为单例,true则为单例:

package com.dayuanit.utils.hungry;

public class Test {
    public static void main(String[] args) {
        Singleton singleton1 = Singleton.getInstance();
        Singleton singleton2 = Singleton.getInstance();

        System.out.println(singleton1 == singleton2);

    }
}

完毕,各位看官觉得很赞的,留言评论,点赞~

  没有英汉互译结果
  请尝试网页搜索

posted on 2018-04-14 17:29 m-yb 阅读() 评论() 编辑 收藏

版权声明:本文为m-yb原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/m-yb/p/8833085.html