美文网首页程序员
Java设计模式---单例

Java设计模式---单例

作者: 简书不简单iiii | 来源:发表于2019-03-11 11:26 被阅读0次

    单例模式可是使用频率较高的了先上个图

    大概的几种单例模式

    单例模式分为两种一种是饿汉式一种是懒汉式  其中饿汉式是天生线程安全的

    1 饿汉式:第一次引用就会创建一个实例,也只会有这一个实例 所以线程安全;但是缺点是没办法实现懒加载

    饿汉式(线程安全)

    2 懒汉式:在单线程中Singleton的静态属性instance中,只有instance为null的时候才创建一个实例,构造函数私有,确保每次都只创建一个,避免重复创建;缺点不能再多线程中使用,因为:当两个线程同时运行到判断instance是否为空的if语句,并且instance确实没有创建好时,那么两个线程都会创建一个实例

    懒汉式(线程不安全)

    3 同步锁模式:在懒汉模式上加上了方法同步锁,在同一时刻只能有一个线程得到锁,所以在多线程下也能保证只有一个实例;缺点:每次通过getInstance方法得到singleton实例的时候都有一个试图去获取同步锁的过程。加锁很耗时。

    (懒汉式)同步锁单例

    4 双重加锁DCL:只有当instance为null时,需要获取同步锁,创建一次实例。当实例被创建,则无需试图加锁;缺点:用双重if判断,复杂,容易出错。

    DCL

    相关文章

      网友评论

        本文标题:Java设计模式---单例

        本文链接:https://www.haomeiwen.com/subject/besvpqtx.html