设计模式-----Singleton单件模式

[code]
/* 1:同步一个方法可能造成程序执行效率下降100倍。。。。
2.在多任务环境下各任务间共享的标志都应该加上volatile(易变的)修饰,这是告诉JVM这个变量是易变的,每次读取他时请到主存中进行读取,不要到寄存器中读取他在主存中的备份。。因为易变嘛。。。。虽然寄存器中备份读取出来要快很多但这个易变的变量很可能被修改了...
*/

//懒汉式单件,使用双重检查 加锁机制,这个方式当然比恶汉要好,因为恶汉在创建时服务器负担重点,所以说关心性能的朋友,用懒汉的吧。。。。。
public class Singleton{
private volatile static Simgleton s;

private Singleton(){}

public static Singleton getInstance(){
if(s == null){//第一次检查
synchronized(Singleton.class){
if(s == null){ //第二次检查
s = new Singleton();
}
}
}
return s;
}
}

//恶汉式太简单了。。霍霍

//head first上的问题笔记
/**
难道我不能创建一个类。把所有的方法和变量都定义成为静态的,把类直接当作一个单件?
*/
//答:静态初始化的控制权掌握在Java手中,因为初始化次序的复杂性,所有可能会有意想不到的bug存在,除非你绝对有必要使用类的单件,否则建议使用对象的单件比较保险


注意:只有一个元素的枚举也是一个单例哦,因为枚举里面的成员都是static final的

[/code]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值