设计模式之单例模式--java

设计模式之单例模式–java

单例模式原理:
1.首先单例模式中SingleTon的构造方法和成员对象都是private的,所以只有通过内部的getInstance()方法才可以得到一个实例;
2.其次,单例模式中的成员对象是static的,static修饰的成员对象是类属性的只能够类首次加载时加载一次并且存储在静态存储区域,所以成员变量instance只存在一份。
单例模式的方法有以下几种:
1.懒汉式(第一种):
懒汉式第一种
这种懒汉式,存在线程安全问题,解决办法看懒汉式升级版2.0;
2.懒汉式(第二种)
懒汉式第二种
此种懒汉式虽然解决了线程安全问题,但看起来有些乱,用起来也麻烦,不推荐;
3.饿汉式
饿汉式
此种饿汉式不存在线程安全问题,可以放心使用;
4.内部类
内部类
内部类方式感觉有点高大上啊~
5.读写锁
读写锁分为读锁和写锁。多个读锁之间不互斥、读锁和写锁之间互斥、写锁和写锁之间互斥。这一个功能很重要,对并发读取提高了性能,现在我们利用这个性能实现单例模式
读写锁实现单例模式
这里涉及了锁降级概念,锁降级是说允许从写入锁降级为读取锁,其实现方式是:先获取写入锁,然后获取读取锁,最后释放写入锁。但是,不能从读锁升级到写锁。

说了这么多,你记住了哪个呢?不管哪个会用就好啦,如果为了面试还是多记一点比较好哦!
若有错误,还请大家指正。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值