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

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

作者: 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方法中返回私有静态内部类的类属性, 实现懒加载

相关文章

  • Java 单例模式

    线程安全的单例模式的几种实现方法分享线程安全的单例模式实现有几种思路,个人认为第2种方案最优雅 饿汉式 借助内部类...

  • 单例设计模式

    饿汉式,线程安全 但效率比较低 饱汉式,非线程安全 饱汉式,线程安全简单实现 线程安全 并且效率高 单例模式最优...

  • 设计模式

    手写单例模式(线程安全) 你知道几种设计模式?单例模式是什么?Spring中怎么实现单例模式?

  • 实现单例模式的方式2

    方式一: 能保证线程安全 定义类的时候实现单例模式 方式二: 能保证线程安全 对已定义好的类实现单例模式

  • 设计模式——单例模式的破坏

    概述: 之前学习了单例模式的几种实现,解决了多线程情况下,单例的线程安全问题,保证了单例的实现。但是单例模式在下面...

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

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

  • kotlin实现单例模式

    1.懒汉式实现单例模式 2.线程安全懒汉式实现单例模式 3.双重校验懒汉式实现单例模式 4.静态内部类方式实现单例模式

  • 单例

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

  • C++中线程安全的单例模式

    简介 单例模式是很常用的一种设计模式,在实现过程中要非常注意线程安全,我们会介绍四种方式来实现线程安全的单例模式:...

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

    说起设计模式, 应该是面试中最长被问到的知识点, 通常最先能想到的非单例模式莫属! 单例模式从线程角度来讲一般分为...

网友评论

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

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