美文网首页
线程安全的单例模式最优实现

线程安全的单例模式最优实现

作者: geekofo | 来源:发表于2019-05-28 21:49 被阅读0次

    说起设计模式, 应该是面试中最长被问到的知识点, 通常最先能想到的非单例模式莫属!

    单例模式从线程角度来讲一般分为两大类: 线程安全单例模式与非线性安全单例模式

    一提到线程安全大家首先想到的是加锁,synchronized!!!, 然鹅, 加锁毕竟比不加锁要更多消耗系统资源, 下面介绍一种不需要加锁,且可以实现懒加载的线程安全单例模式, 啥也不说, 直接上代码!

    import java.util.Arrays;

    public class Singleton {

    private Singleton() {

    System.out.println("single");

    }

    private static class Inner {

    private static final Singleton s = new Singleton();

    }

    public static Singleton getSingle() {

    return Inner.s;

    }

    public static void main(String[] args) {

    Thread[] ths = new Thread[200];

    for(int i=0; i<ths.length; i++) {

    ths[i] = new Thread(()->{

    Singleton.getSingle();

    });

    }

    Arrays.asList(ths).forEach(o->o.start());

    }

    }

    1, 将构造方法设置为私有, 防止被new

    2, 创建私有静态内部类, 内部类中定义该单例的静态对象

    3, 在get方法中返回私有静态内部类的类属性, 实现懒加载

    相关文章

      网友评论

          本文标题:线程安全的单例模式最优实现

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