单例模式

[b][align=center][size=large]单例模式[/size][/align][/b]
[b][size=medium]1.1饿汉式[/size][/b]
/**
* 单例
*
* @author lzk
*
*/
public class Singleton {
private static Singleton instance;
private Singleton() {
}
public static Singleton GetInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null){
instance = new Singleton();
}
}
}
return instance;
}
}
总结:利用双重锁的方式这样颗粒度变小了,但还是利用同步的方式来解决资源共享问题。
不采取任何措施造成的线程不安全问题,是因为在程序中出现了“竞态条件”,由于不恰当的执行时序而出现不正确的结果。最常见的竞态条件类型就是“先检查后执行”操作,即通过一个可能失效的观测结果来决定下一步的动作。
[b][size=medium]1.2饱汉式[/size][/b]
/**
* 单例
*
* @author lzk
*
*/
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {
}
public static Singleton GetInstance() {
return instance;
}
}
总结:不利用线程同步的方式,而是在类被加载的时候就生成一个实例对象。这个带来的问题就是,不管这个单例有没有用到都会一直存在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值