单例模式 - Singleton

来源:互联网 发布:Linux看主频命令 编辑:程序博客网 时间:2024/06/07 04:42

对今天学习的Singleton简单总结下:

定义:保证一个类只有一个实例,并提供一个访问它的全局访问点。
 · private 构造函数;
 · private static 成员变量:缓存实例;
 · public static 方法:创建类实例;
作用
  - [1]. 保证唯一实例;
  - [2]. 提供对唯一实例的受控访问。

多线程下的单例模式
进程加锁 (懒汉式 -> 饿汉式) –> 双重锁定(Double-Check Locking) –> 静态内部类 –> 枚举

public class Singleton{   // 单例-懒汉式    private static Singleton instance;    private Singleton() {}    public static synchronized Singleton getInstace()    {        if(null==instance)            instance = new Singleton();        return instance;    }}

:同步方法解决多线程问题。仅第一次设置instance需要同步,之后每次调用此方法,同步都是累赘降低性能。


public class Singleton{ // 单例-双重锁定(懒汉式改进版)    private volatile static Singleton instance;    private Singleton() {}    public static Singleton getInstace()    {        if(null==instance){            synchronized(Singleton.class){                if(null==instance)                    instance = new Singleton();            }        }        return instance;    }}

:确保实例仅在未创建时加锁,亦能保证多线程安全。
volatile:避免内存模型允许的’无序写入’(某个线程可能会获得一个未完全初始化的实例)导致失败。


public class Singleton{   // 单例-饿汉式   private static Singleton instance = new Singleton();  private Singleton() {}  public static Singleton getInstace()  {    return instance;  }}

:使用静态初始化(无需显示编写线程安全代码),加载时即实例化,提前占用系统资源。


public class Singleton{  // 静态内部类    private Singleton() {}    private static class SingletonHelper{        private final static Singleton instance = new Singleton();    }    public static Singleton getInstace(){        return SingletonHelper.instance;    }} 

:加载时不会初始化静态变量instance,达到延时加载。
  static:成员变量只保存一份副本;
  final:保证变量不可变。


待续 = =

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 快递电话写错了怎么办 网上买沙发想退货怎么办 买的电脑想退货怎么办 买了衣服想退货怎么办 天猫买药审核通过后不要了怎么办 京东维修无发票怎么办 京东维修没有发票怎么办 苹果6s外音没了怎么办 苹果6splus开不了机怎么办 顺丰快递寄件填错收件人地址怎么办 收快递电话换了怎么办 顺丰快递没人收怎么办 网购东西没收到怎么办 中通快递没收到怎么办 快递员不给验货怎么办 顺丰验货不要了怎么办 闲鱼买家掉包了怎么办 闲鱼正在退款中怎么办 拒收货物卖家拒绝退款怎么办 货物没问题淘宝卖家拒收怎么办 头发稀少长的慢怎么办 没满16岁怎么办银行卡 网上买东西手机号填错了怎么办 买东西电话号码填错了怎么办 淘宝联盟扣54分怎么办 联盟被扣54分怎么办 ofo押金退了余额怎么办 网购还没收货就已签收怎么办 理财公司倒闭分公司法人怎么办 公司让离职不想走怎么办 公司让离职自己不想走怎么办 小孩子有购物狂病怎么办 拉杆箱的轮子卡怎么办 想你了怎么办的英文 那现在怎么办 英文怎写 平安证券账号忘了怎么办 发现发票是假的怎么办 公司收到假发票入账了怎么办 手表皮带有汗味怎么办 利客来购物卡丢了怎么办 乐天玛特倒闭卡怎么办