前言
为了保证线程的安全性,往往要以牺牲性能为代价。为了兼得二者,前人进行了多番尝试,也确实创造出诸多有效方案,双重检查锁就是其中的一种。
DCL:Double Check Lock(双重检查锁)。令人哭笑不得的是,其闻名原因不是因为有效性,而是行业标杆级的错误性。双重检查锁同时体现了同步中的独占性与可见性同等的重要性,因此成为多线程学习中必学的经典案例。
一 双重检查锁(DCL)的原理
我们以DCL的方式来实现单例模式作为学习举例。
@Data
public class Singleton {
private static Singleton singleton;
/**
* 一
*/
private String one;
/**
* 二
*/
private String two;
/**
* 三
*/
private String three;
/**
* 四
*/
private String four;
private Singleton() {
this.one = "三万里河东入海";
this.two = "五千仞岳上摩天";
this.three = "遗民泪尽胡尘里";

最低0.47元/天 解锁文章
2261

被折叠的 条评论
为什么被折叠?



