怎么实现一个线程安全的单例模式

author author     2023-03-31     775

关键词:

设计模式在面试中挺常考的,单例模式是考的最多的。线程安全的单例还有很多种实现方法。可以使用静态内部类、双重校验锁、静态代码块等。

1、饿汉式
public class Singleton()
    private static Singleton instance = new Singleton();
    private Singleton()
    public static Singleton getInstance()
        return instance;
    

2、懒汉式
public class Singleton()
    private static Singleton instance;
    private Singleton()
    public static synchronized Singleton getInstance()
        if(instance==null)
            instance = new Singleton();
        
        return instance;
    

参考技术A 最简单的办法就是在单例模式所在的类中方法上加同步锁

多线程实现单例模式(饿汉懒汉)实现线程安全的单例模式(双重效验锁)(代码片段)

...一个对象,不能new多个对象。比如:单例模式的两种经典实现单例模式中有两个典型实现:饿汉模式懒汉模式我们来通过一个生活上的例子来给大家讲讲什么是饿汉模式,什么是懒汉模式。 但是在计算机中,普遍认为懒汉模式... 查看详情

实现线程安全的单例模式

一、双检查锁机制packagesingleton;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;/***双检查锁机制--单例模式*Createdbydaizengjieon2017/8/29.*/publicclassMySingleton{privatestaticfinalLoggerlogger=LoggerFactory.getL 查看详情

c++的单例模式与线程安全单例模式(懒汉/饿汉)

...单例模式  我们都很清楚一个简单的单例模式该怎样去实现:构造函数声明为private或protect防止被外部函数实例化,内部保存一个privatestatic的类指针保存唯一的实例,实例的动作由一个public的类方法代劳,该方法也返回单例类... 查看详情

线程安全的单例模式

...没用到它,就非常耗费资源。 2. 经典的单例模式实现:Java代码publicclassSingleton{//用一个静态变量来记录Singleton类的唯一实例privatestaticSingletonuniqueInstance;privateSingleton(){}//注意这个方法也是静 查看详情

多线程阻塞队列定时器线程安全的单例模式的原理及实现(代码片段)

文章目录1.线程安全版本的单例模式1.1单例模式介绍1.2实现线程安全版本的懒汉模式2.阻塞队列2.1阻塞队列介绍2.2标准库中的阻塞队列2.3实现阻塞队列2.4生产者消费者模型3.定时器3.1定时器介绍3.2标准库中的定时器3.3实现定时器1.... 查看详情

多线程阻塞队列定时器线程安全的单例模式的原理及实现(代码片段)

文章目录1.线程安全版本的单例模式1.1单例模式介绍1.2实现线程安全版本的懒汉模式2.阻塞队列2.1阻塞队列介绍2.2标准库中的阻塞队列2.3实现阻塞队列2.4生产者消费者模型3.定时器3.1定时器介绍3.2标准库中的定时器3.3实现定时器1.... 查看详情

线程安全的单实例模式

我们都很清楚一个简单的单例模式该怎样去实现:构造函数声明为private或protect防止被外部函数实例化,内部保存一个privatestatic的类指针保存唯一的实例,实例的动作由一个public的类方法代劳,该方法也返回单例类唯一的实例。... 查看详情

线程安全的单例模式的几种实现

...种常见的设计模式;JavaSingleton模式就为我们提供了这样实现的可能。使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbagecollection)。 单例模式也是一种比较常见的设计模式,它到... 查看详情

dcl双检查锁机制实现的线程安全的单例模式

publicclassMyObject{privatevolatilestaticMyObjectmyObject;privateMyObject(){}publicstaticMyObjectgetInstance(){try{if(myObject!=null){}else{Thread.sleep(3000);synchronized(MyObject.class){if(myObject= 查看详情

高并发下线程安全的单例模式

...目开发中最为常见的设计模式之一,而单例模式有很多种实现方式,你是否都了解呢?高并发下如何保证单例模式的线程安全性呢?如何保证序列化后的单例对象在反序列化后任然是单例的呢?这些问题在看了本文之后都会一一... 查看详情

多线程下的单例模式

...目开发中最为常见的设计模式之一,而单例模式有很多种实现方式,你是否都了解呢?高并发下如何保证单例模式的线程安全性呢?如何保证序列化后的单例对象在反序列化后任然是单例的呢?这些问题在看了本文之后都会一一... 查看详情

如何实现一个线程安全的单例字典类进行缓存?(代码片段)

我试图实现一个线程安全字典单例类用于缓存目的。namespaceSingletomDictpublicsealedclassMySingleton:IDisposableprivatestaticreadonlyLazy<MySingleton>coll=newLazy<MySingleton>(()=>newMySingleton());privatestati 查看详情

单例模式(下)特殊单例的实现(代码片段)

...式。”常见的有线程的单例,进程的单例(一般默认实现),多进程的单例。 实现线程唯一的单例“进程唯一”指的是进程内唯一,进程间不唯一。类比一下,“线程唯一”指的是线程内唯一,线程间 查看详情

线程安全的单例模式(代码片段)

饿汉模式1publicclassSingle23privatestaticSingleinstance=newSingle();45privateSingle()6System.out.println("Single:"+System.nanoTime());789publicstaticSinglegetInstance()10returninstance;1112  查看详情

iodh实现的单例模式

饿汉式单例类不能实现延迟加载,不管将来用不用始终占据内存;懒汉式单例类线程安全控制烦琐,而且性能受影响。有种更好的单例模式叫做InitializationDemandHolder(IoDH)的技术。 publicclassSingleton{privateSingleton(){System.out.println(Si... 查看详情

如何写一个简单的单例模式?

如何写一个简单的单例模式?一、基本的实现思路:单例的实现主要是通过以下两个步骤:1、将该类的构造方法定义为私有方法,这样其他处的代码就无法通过调用该类的构造方法来实例化该类的对象,只有通过该类提供的静态... 查看详情

java基础——线程安全的单例模式懒汉式

packagesavesingleton;/*使用同步将单例模式中的懒汉式改写成线程安全的@authorzsben@create2020-01-0322:22*/classBank{privateBank(){}privatestaticBankinstance=null;/*publicstaticsynchronizedBankgetInstance(){if(instance==null){ 查看详情

线程安全的单例模式(代码片段)

一饿汉模式packagecom.thread;publicclassTest8publicstaticvoidmain(String[]args)MyThreadt1=newMyThread();MyThreadt2=newMyThread();MyThreadt3=newMyThread();t1.start();t2.start();t3.start();classMyObjectp 查看详情