Java最简单设计模式之单列模式

单列模式之饥汉模式、饱汉模式、双重锁模式

我们经常用到的Java模式当中,经常会用到也比较简单的模式就是单列模式了,当系统设计中只需要创建一个实例的对象时。就会选用单列模式。

饱汉模式

饱汉模式顾名思义就是已经饱了不着急了,在需要的时候才被创建使用,不会早早的创建,优点是不用的时候不占用内存,缺点是线程不安全的,因为当多个线程同时访问时就会实例化多个对象。所以有了双重锁对这个模式进行改进。

public class UserA {

	public static UserA usera;
	private UserA() {
	}
	public static UserA getUserA() {
		usera = new UserA();
		return usera;
	}
}

饥汉模式

饥汉模式就是类加载的时候就已经创建了这个类的实例,使用的时候就只用调用这个类的实例就可以了,缺点是如果系统设计时涉及多数的单列的时候就会创建出多个实例,占用内存。优点是代码简单明了,也是线程安全的。

public class UserB {
 private static UserB  userb= new UserB();
 private UserB() {
	 
 }
 public static UserB getUserB() {
	 return userb;
 }
}

双重锁模式

这个模式是对饱汉模式的升级,当多个线程访问时就会加锁再创建实例,就不会在创建多个实例。

public class UserC {

	public static UserC userc;
	private UserC() {
	}
	public static UserC getUserC() {
		if(userc==null) {
			synchronized (UserC.class) {
				
				userc = new UserC();
			}
		}
		
		return userc;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值