DCL并非单例模式专用】的更多相关文章

我相信大家都很熟悉DCL,对于缺少实践经验的程序开发人员来说,DCL的学习基本限制在单例模式,但我发现在高并发场景中会经常遇到需要用到DCL的场景,但并非用做单例模式,其实DCL的核心思想和CopyOnWrite很相似,就是在需要的时候才加锁:为了说明这个观点,我先把单例的经典代码防止如下: 先说明几个关键词: volatile:保证线程的可见性,有序性:这两点非常重要,可见性让线程可以马上获释主存变化,二有序性避免指令重排序出现问题: public class Singleton { //通过…
所谓的DCL 就是 Double Check Lock,即双重锁定检查,在了解DCL在单例模式中如何应用之前,我们先了解一下单例模式.单例模式通常分为"饿汉"和"懒汉",先从简单入手 饿汉 所谓的"饿汉"是因为程序刚启动时就创建了实例,通俗点说就是刚上菜,大家还没有开始吃的时候就先自己吃一口. public class Singleton { private static final Singleton singleton = new Singl…
1.单例模式就是确保一个类,只有一个实例化对象,而且自行实例化并向整个系统提供这个实例. 2.使用场景: 确保某个类,有且只有一个对象,避免产生对个对象,消耗过多的资源. 2.实现单例模式的重要点: <1> 构造函数不对外开放,一般为private. <2>通过一个静态方法或枚举返回一个单例类对象 <3>确保单例对类的对象有且只有一个,尤其是在多线程环境中 <4>确保单例类对象在反序列化时不会重复构建对象 3.简单的单例模式 [饿汉模式] public cl…
1.错误案例 通过一个案例引出volatile关键字,例如以下代码示例 : 此时没有加volatile关键字两个线程间的通讯就会有问题 public class ThreadsShare { private static boolean runFlag = false; // 此处没有加 volatile public static void main(String[] args) throws InterruptedException { new Thread(() -> { System.o…
小型存储设备凭借低廉的价格.多样化的品种.实用等特性大量充斥在大家身边,比如智能手机手机上.数码照相机上.游戏机上(一般是掌机)等都小型电子设备都频繁的使用到这种统称为SD的产品,比如TF卡和SD卡(他们都属于SD产品系). 但由于很多人叫法不同意使得一些人容易将TF卡和SD卡混淆.那么TF卡和SD卡的区别有哪些呢?穆童给大家讲讲: 什么是TF卡? TF卡(全称TransFLash)是目前独立成品的最小存储卡了.TF卡是手机上最常用的存储卡了,几乎是手机存储的标准配置.所以一般大家说的手机卡.手…
很多程序都要求用户输入某种信息, 例如:   让用户存储游戏首选项或提供要可视化的数据,程序把用户的信息存储在列表和字典等数据结构中, 用户关闭程序时,我们几乎总要保存他们提供的信息: 如何保存--  一种简单的方式是使用模块json来存储数据. JSON(JavaScript Object Notation)     模块json让我们能够将简单的python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据. 不仅如此,JSON还可以让我们在python程序之间分享数据,更重要的是J…
1. 垃圾回收算法 标记-清除算法 标记-清除算法是最基本的算法,和他的名字一样,分为两个步骤,一个步骤是标记需要回收的对象.在标记完成后统一回收被标记的对象.这个算法两个问题.一个是效率问题,标记和清除的效率不高.第二个问题是标记-清除之后会有大量不连续的碎片空间,如果我们需要更大的连续内存就必须GC. 复制算法 复制算法,不同于标记-清除,复制算法大多数用于新生代,它需要大小相等的两块内存,每次只使用一块内存,当GC的时候会把这块内存存活的对象复制到另外一块内存上面,解决了时间效率和空间碎片…
[那座山,正当顶上,有一块仙石.其石有三丈六尺五寸高,有二丈四尺围圆.三丈六尺五寸高,按周天三百六十五度:二丈四尺围圆,按政历二十四气.上有九窍八孔,按九宫八卦.四面更无树木遮阴,左右倒有芝兰相衬.盖自开辟以来,每受天真地秀,日精月华,感之既久,遂有灵通之意.内育仙胞,一日迸裂,产一石卵,似圆球样大.因见风,化作一个石猴,五官俱备,四肢皆全.便就学爬学走,拜了四方.目运两道金光,射冲斗府.] 上面这段文字,描述了悟空出生时的场景.孙悟空只有一个,任何程序要使用孙悟空这个对象,都只能使用同一个实例…
小型存储设备凭借低廉的价格.多样化的品种.实用等特性大量充斥在大家身边,比如智能手机手机上.数码照相机上.游戏机上(一般是掌机)等都小型电子设备都频繁的使用到这种统称为SD的产品,比如TF卡和SD卡(他们都属于SD产品系). 但由于很多人叫法不同意使得一些人容易将TF卡和SD卡混淆.那么TF卡和SD卡的区别有哪些呢?穆童给大家讲讲: 什么是TF卡? TF卡(全称TransFLash)是目前独立成品的最小存储卡了.TF卡是手机上最常用的存储卡了,几乎是手机存储的标准配置.所以一般大家说的手机卡.手…
10.文件和异常 1.学习处理文件,让程序快速的分析大量数据,学习处理错误,避免程序在面对意外时崩溃.学习异常,异常是python创建的特殊对象,用于管理程序运行时出现的错误,提高程序的适用性,可用性,和稳定性. 2.学习模块json,json可以用于保存用户数据,避免程序意外停止运行时丢失. 3.学习处理文件和保存数据,可以让程序使用起来更容易,用户可以选择输入什么类型的数据,并选择在什么时候输入,并且可以在使用程序处理一些事后关闭程序,下次在继续做. 4.学习处理异常,帮助应对文件不存在的情…