单例设计模式

单例的作用优点:之生成单一实例,减少频繁创建性能开销太大。通常用于 某个对象创建需要较多资源,比如读取配置、依赖较多的。通常系统的工具类也会考虑使用。

单例的实现方式:

 饿汉,   类变量中实例化

懒汉       getInstance时候实例化,如在方法同步,将会大大影响性能。

静态内部类   在静态内部类实例化

枚举    单一实例

双重检查    一般不考虑使用。

 

使用选择:

     对象占用资源少时,枚举好于饿汉

          对象占用资源大时,静态内部类优于懒汉模式

 

单例模式破解

反射可以破解上面几种(不包含枚举式)实现方式!(可以在构造方法中手动
抛出异常控制)
反序列化可以破解上面几种((不包含枚举式))实现方式!
可以通过定义readResolve()防止获得不同对象。
 
多线程环境下性能测试
饿汉,静态内部类,枚举 耗时都在20ms到40ms 之间,懒汉式耗时636ms
 
 
CountDownLatch
同步辅助类,在完成一组正在其他线程中执行的操作之前,它允个或多个线程一直等待。 • countDown() 当前线程调此方法,则计数减一(建议放在 finally里• await(), 调用此方法会一直阻塞当前线程,直到计时器的值为0
 

 

转载于:https://www.cnblogs.com/bruce0706/p/10984188.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值