java 单件模式

定义:确保一个类只有一个实例,并提供一个全局访问点。
单件模式与全局变量:
  • 全局变量必须在程序一开始就创建这个变量,如果对象十分耗费资源且这次执行过程中未用得到,则造成了浪费。单件模式可以在需要是创建对象。
  • 单件模式用于需要一个对象的情况,例如:线程池,缓存,注册表等。
示例
package singleton;

/**
 * Created by zjy on 2017/4/5.
 * 双重加锁,首先检查是否创建,如果未检查,进行同步.
 */
public class Singleton {
    //当 uniqueInstance 被初始化时,多个线程可以正确处理uniqueInstance实例
    private volatile static Singleton uniqueInstance;

    public static Singleton getInstance(){
        if (uniqueInstance ==null){
            //只有第一次彻底执行这段代码
            synchronized (Singleton.class){
                if (uniqueInstance ==null){
                    uniqueInstance = new Singleton();
                }
            }
        }
        return  uniqueInstance;
    }

}
  • 采用双重加锁模式,Java5 之后才能用volatile关键字
  • 也可以延迟创建实例且只同步 getinstance方法,不过性能不佳
  • 也可以急切实例化,可是就直接创建实例。
  • 如果使用多个类加载器,可能会导致多个实例单例模式失效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值