专栏首页学习笔记持续记录中...Java设计模式-单例模式-懒汉式-同步代码块

Java设计模式-单例模式-懒汉式-同步代码块

优缺点说明

1)这种方式,本意是想对懒汉式-线程安全这种方式进行的改进,因为前面同步方法效率太低,改为同步产生实例化的代码块

2)但是这种同步并不能起到线程同步的作用。跟懒汉式-线程不安全遇到的情形是一样的,假如一个线程进入了if (singleton == null)判断语句块,还没有来得及往下执行,另一个线程也通过了这个判断语句,这时便会产生多个实例

3)结论:在实际开发中,不能使用这种方式

public class SingletonTest05 {
    public static void main(String[] args) {
        Singleton05 instance  = Singleton05.getInstance();
        Singleton05 instance01 = Singleton05.getInstance();

        System.out.println(instance == instance01);
        System.out.println("instance,hashCode= " + instance.hashCode());
        System.out.println("instance01,hashCode = " + instance01.hashCode());
    }
}

class Singleton05{
    private static Singleton05 singleton05;
    private Singleton05(){}

    public static Singleton05 getInstance(){
        if (singleton05 == null){
            synchronized (Singleton05.class){
                singleton05 = new Singleton05();
            }
        }
        return singleton05;
    }
}

// 运行结果
true
instance,hashCode= 1846274136
instance01,hashCode = 1846274136

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java设计模式-单例模式-枚举

    1)这借助于JDK1.5中添加的枚举来实现单例模式。不仅能避免多线程同步问题,而且还能防止反序列化重新创建新的对象

    桑鱼
  • Java基础:五、方法重载(2)

    在Java里,构造器是强制重载方法名的另一个原因。既然构造器的名字已经由类名所决定,就只能有一个构造器名,如果想用多种方式创建一个对象该怎么办呢?这就需要两个构...

    桑鱼
  • Java设计模式-单例模式-饿汉式(静态变量)

    1)构造器私有化(防止new) 2)类的内部创建对象 3)向外暴露一个静态的公共方法,getInstance

    桑鱼
  • 浅谈原理--hashCode方法

    每增加一个元素,我们就可以通过equals方法判断集合中的每一个元素是否重复,但是如果集合中有10000个元素了,我们每添加一个元素的时候,就需要进行10000...

    Arebirth
  • iOS开发·由SDWebImage引发的知识点聚合与思考(最新呕心沥血之作)

    学习iOS的各种知识点,例如runloop,只懂原理不行,要清楚明白它的应用场景才是真懂;学习SDWebImage的框架源码,只看SDWebImage的业务逻辑...

    陈满iOS
  • Web测试—Web工作原理

     大规模的、联机式的信息储藏所,万维网用链接的方法从因特网上的一个站点访问另一个站点。

    小老鼠
  • 面试题-使用线程交替打印奇数偶数

    yunlgonn
  • ROP系统攻击

    ROP全称为Return-oriented Programming(面向返回的编程)是一种新型的基于代码复用技术的攻击,攻击者从已有的库或可执行文件中提取...

    战神伽罗
  • 病人个人健康知识图表(CS AI)

    现有的患者数据分析平台无法整合具有上下文、个人和针对患者的信息。为了使推荐系统对查询做出适当的响应或从患者数据中获得有意义的见解,它应该考虑有关患者健康历史的个...

    用户7095611
  • 腾讯云分布式数据库可用性系统实践

    腾讯云数据库技术专家,赵海明在 PostgreSQL 2017 中国技术大会上,以 腾讯分布式数据库 Tbase 的可靠性系统为例,为大家分享了保障分布式系统...

    云加社区

扫码关注云+社区

领取腾讯云代金券