DCL双重检测实现线程安全的单例模式

本文探讨了单例模式在多线程环境中的应用,对比了饿汉模式和懒汉模式,并详细讲解了如何通过双重检查锁定(DCL)来实现线程安全的单例模式,确保在并发情况下也能正确地创建和使用单例对象。
摘要由CSDN通过智能技术生成

一、前言
单例模式在设计模式中使用的较多,也是我学习设计模式最先接触的一个设计模式,虽然容易理解,但是能将其运用于实际应用中却很难。最近也在学习《Java多线程编程核心技术》这本书,如何将多线程与单例模式结合起来是个值得探讨的问题。
二、我对单例模式的理解
单例模式,字面理解就是一个程序中对于一个类,只能有一个类的实例。比如在一个应用程序中用来检测当前登录的用户个数(LoginUser类),产生一个实例LoginUser user = new LoginUser();,对于每一个在调用这个实例来获取当前登录用户个数的应用程序来说,当前登录的人数应该是固定的,每个应用程序获取到的user.size()是一样的才正确,这就是单例模式的简单应用。相反,如果产生了2个实例,在某一时刻有用户退出又有用户登录,可能会导致这2个实例的值不一样,统计到的用户登录人数当然会出错。
三、单例模式与多线程
单例模式又分为饿汉模式和懒汉模式。具体区别为:
(1)**饿汉模式:**在申明对象时立即对其实例化,即在调用方法前,实例已经被创建:private static LoginUser user = new LoginUser();
代码如下:
首先创建实例对象类:

public class MyObject {
//立即加载:饿汉模式
    private  static MyObject myObject = new MyObject();
    private MyObject(){

    }
    publi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值