zoukankan      html  css  js  c++  java
  • 单件模式

    第五个模式:单件模式

    5.1问题引入:

    有一些对象我们其实只需要一个,比方说:线程池,缓存,对话框,处理偏好设置和注册表的对象,日志对象,充当打印机、显卡等设备的驱动程序的对象。

    5.2解决方案1:

    wps555B.tmp

    单件模式:确保一个类只有一个实例,并提供一个全局访问点

    让我们来看看代码:getInstance()是静态的,这意味着它是一个类方法,所以可以在代码的任何地方使用Singleton.getInstance()访问它。这和访问全局变量一样简单,只是多了一个优点:单件可以延迟实例化。

    缺点:会造成线程不安全!

    wpsCA4D.tmp

     

    解决办法:只要把getInstance()方法编程同步的(synchronized)方法,多线程灾难几乎可以轻易地解决了;但是,只有第一次执行此方法时,才真正需要同步。换句话说,一旦设置好了uniqueInstance变量,就不再需要同步这个方法了。之后每次调用这个方法时,同步都是一种累赘。

    解决办法:

    1.如果getInstance()的性能对应用程序不是很关键,就什么都别做;

    2.使用“急切”创建实例,而不用延迟实例化方法;

    3.用“双重检查加锁”,在getInstance()中减少使用同步;

    wps2C79.tmp

  • 相关阅读:
    触发器_01(trigger)
    24.Show table status解析
    Mysql排名问题
    zabbix监控
    MyFlash工具
    23.Sharding:谁都能读懂的分库、分表、分区
    Mysql集群结构说明
    Percona XtraDB Cluster(PXC) Mysql集群
    mysql-router
    MGR搭建的过程中遇见的错误以及处理方法
  • 原文地址:https://www.cnblogs.com/maverick-fu/p/4503727.html
Copyright © 2011-2022 走看看