单例模式之懒汉模式,懒汉模式之高效模式,DLC双判断模式

import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * 单例模式之懒汉模式
 * 懒汉模式之高效模式
 * DLC双判断模式
 */
public class SingleClassLazySync {
    private static SingleClassLazySync singleClassLazySync;

    private SingleClassLazySync() {
    }

    public static SingleClassLazySync getInstance() {
        if (singleClassLazySync == null) {
            synchronized (SingleClassLazySync.class) {
                if (singleClassLazySync == null) {
                    System.out.println("i m in new instance!");
                    singleClassLazySync = new SingleClassLazySync();
                }
            }
        }
        return singleClassLazySync;
    }

    static class A implements Runnable {

        @Override
        public void run() {
            System.out.println(SingleClassLazySync.getInstance().hashCode());
        }
    }

    public static void main(String[] args) {
        ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 5, 0l, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
        boolean flag = true;
        for (int i = 0; i < 5; i++)
            executor.execute(new A());
        executor.shutdown();
    }
}

  两个判断的位置

第一个为了日后获取实例的线程准备

第二个为了刚刚获得锁的线程准备,如果没有这个,将会有同步问题。

输出结果:

原文地址:https://www.cnblogs.com/qfxydtk/p/8728937.html

时间: 2024-10-08 19:07:30

单例模式之懒汉模式,懒汉模式之高效模式,DLC双判断模式的相关文章

我的C语言学习之路——初装Linux(双系统模式)

我的C语言学习之路--初装Linux(双系统模式) 第一次听说Linux是在微软公布不再维护WindowXP系统,当时打开头条网,Linux几乎占据了头条,好奇之下,百度了Linux(Linux操作系统是UNIX操作系统的一种克隆系统,它诞生于1991 年的 [Linux桌面] 10 月5 日(这是第一次正式向外公布的时间)). 第二次听说Linux是在程序员联盟(微信公众号:programmerLeague)   讨论,这也是我真正接触Linux的时候.作为一个编程初学者,对一切有利于编译的软

通过KeepAlived搭建MySQL双主模式的高可用集群系统

企业级MySQL集群具备高可用.可扩展.易管理.低成本的特点.下面将介绍企业环境中经常应用的一个解决方案,即MySQL的双主互备架构,主要设计思路是通过MySQL Replication技术将两台MySQL Server互相将对方作为自己的Master,自己又同时作为对方的Slave来进行复制.这样就实现了高可用构架中的数据同步功能,同时,将采用KeepAlived来实现Mysql的自动failover.在这个构架中,虽然两台MySQL Server互为主从,但同一时刻只有一个MySQL Ser

数据库求闭包,求最小函数依赖集,求候选码,判断模式分解是否为无损连接,3NF,BCNF

1.说白话一点:闭包就是由一个属性直接或间接推导出的所有属性的集合. 例如:f={a->b,b->c,a->d,e->f}:由a可直接得到b和d,间接得到c,则a的闭包就是{a,b,c,d} 2. 候选码的求解理论和算法 对于给定的关系R(A1,A2,-An)和函数依赖集F,可将其属性分为4类: L类  仅出现在函数依赖左部的属性. R 类  仅出现在函数依赖右部的属性. N 类  在函数依赖左右两边均未出现的属性. LR类  在函数依赖左右两边均出现的属性. 定理:对于给定的关系

phpwamp单身狗模式的详解与分析,单身狗模式/即霸体模式的作用讲解。

最近有学生在使用PHPWAMP的时候,问我霸体模式的作用. 学生问:老师,PHPWAMP里面的霸体模式是什么意思,有什么用? 回答:额...就是以前我发布测试版的时候,模式切换里面的单身狗模式. 学生:单身狗?我表示测试版我没有用过啊.... 早在PHPWAMP8.1.8.8正式版发布之前,我曾经对部分用户发布了8.1.8.8的测试版,测试版里新增了"共生模式"与"单身狗模式",发布没多久网友就纷纷向我吐槽.... 网友A:单身狗模式是什么鬼,名字能不能取的好听点

KeepAlived双主模式高可用集群

一.keepalived简介 keepalived是vrrp协议的实现,原生设计目的是为了高可用ipvs服务,keepalived能够配置文件中的定义生成ipvs规则,并能够对各RS的健康状态进行检测:通过共用的虚拟IP地址对外提供服务:每个热备组内同一时刻只有一台主服务器提供服务,其他服务器处于冗余状态,若当前在线的服务器宕机,其虚拟IP地址将会被其他服务器接替(优先级决定接替顺序),实现高可用为后端主机提供服务.   二.keepalived组件 Keepalived组件介绍 core:ke

haproxy高可用以及双主模式(二)

haproxy主备 虚拟VIP:192.168.33.130 把haproxy-01的配置文件拷贝到haproxy-02机器相应的目录即可 [email protected] haproxy]# scp haproxy.cfg [email protected]:/etc/haproxy/ haproxy.cfg                                     100% 3520     3.4KB/s   00:00 启动haproxy-02服务 [[email pro

基于ASP.NET WPF技术及MVP模式实战太平人寿客户管理项目开发(Repository模式)

亲爱的网友,我这里有套课程想和大家分享,如果对这个课程有兴趣的,可以加我的QQ2059055336和我联系. 课程背景 本课程是教授使用WPF.ADO.NET.MVVM技术来实现太平人寿保险有限公司保险客户管理系统,是学习WPF开发中的一门主打课程之一. WPF是一个框架,它供程序员开发出媲美Mac程序的酷炫界面. Blend是一种工具,可以在美工板上绘制形状.路径和控件,然后修改其外观和行为,从而直观地设计应用程序 Repository\MVVM\MVP设计模式是WPF常用的系统架构 Auto

python 正则表达式 贪婪模式的简介和匹配时的几种模式

看到一篇文章,关于python正则的,http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 贪婪模式与非贪婪模式: 正则表达式通常用于在文本中查找匹配的字符串.Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符:非贪婪的则相反,总是尝试匹配尽可能少的字符.例如:正则表达式"ab*"如果用于查找"abbbc",将找到"abbb".而如果使用

GOF23设计模式之责任链模式(chain of responsibility)与结构型模式总结经典

 责任链模式:Chain of responsibility      将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象. 场景:      打牌时,轮流出牌.      接力赛跑      大学中,奖学金审批.      公司中,公文审批.   结构型模式汇总: 代理模式:为真实对象提供一个代理,从而控制对真实对象的访问. 适配器模式:使原本由于接口不兼容不能一起工作的类,可以一起工作. 桥