单例

单例模式核心结构中只包含一个被称为单例类的核心类,单例模式可以保证系统中一个类只有一个实例且易于外界访问,对于需要重复使用的实例可以节约资源。
单例模式的要点有三个:
一是某个类只能有一个实例;
二是它必须自行创建这个实例;
三是它必须自行向整个系统提供这个实例。

懒汉式

public class SingletonClass{
    private SingletonClass(){
    }
    private static SingletonClass instance=null;
    public static synchronized  SingletonClass getInstance()
    {
        if(instance==null)
        {
               instance=new SingletonClass();
        }
        return instance;
    }   
}

饿汉式

public static class Singleton{
    private Singleton(){   
    }
    //在自己内部定义自己的一个实例,只供内部调用
    private static final Singleton instance = new Singleton();
    //这里提供了一个供外部访问本class的静态方法,可以直接访问
    public static Singleton getInstance(){
        return instance;
    }
}

饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变,懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的

双重锁

public static class Singleton{
    private Singleton(){
    }
    private static Singleton instance=null;
    public static Singleton getInstance(){
        if(instance==null){
        //双重检查加锁,只有在第一次实例化时,才启用同步机制,提高了性能
            synchronized(Singleton.class){
                if(null==instance){
                    instance=new Singleton();
                }
            }
        }
        return instance;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值