`
bleet
  • 浏览: 58990 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

我和单例的爱恨情仇

阅读更多
你是不是曾经有过这样的经历,在写一个名叫getInstance()方法时,特别计较写在方法前面的那个可恶的synchronized,让你无法下手,至少犹豫10秒钟,哈哈。

不管你们有没有过,我每次写单例时,都为这个synchronized搞的痛苦不堪,于是我痛下决心,在以后我的代码里不会再出现延时加载这一概念,我要的只是初始化而已,即时加载又有何妨呢?

只是下个决心而已,缘何要加个痛字,各位看管,是不是有点过分了。

其实不然,且听我慢慢道来。

我第一次与单例相识,那是一个深秋的深夜,那天我第一次听说了《设计模式》,我用一颗年轻的心打开了XX网站的某某网页,输入单例模式并敲下回车键,那一瞬间我的第一感觉就是愚昧与无知,当我还不懂得什么事单例的时候,竟然有数以万计的IT头脑已将它拥入怀抱,而我却在一秒钟前还沾沾自喜,以为发现了个桃花源。

于是乎,我用虔诚和渴求的心灵仔细的阅读了其中一篇,当时我觉得我就是未来的架构师,设计模式这么时髦的东西,我竟然一遍就看懂了,真是不可思议。

再后来,我的代码里到处是单例,哎,现在想来真是乱套。

直到有一天,我认识了多线程,我了解了生产者和消费者的多线程举例,并且也爱上了synchronized这个让我伤痛的词汇,毕竟只有它才能让我有一种100%控制程序运行的感性认识。

于是这个样子,我就一只脚踩了2只船,同时爱上了单例和synchronized,虽说以前学习单例的时候看到过synchronized,但是因为它华而不实的外表(单词太长了,记不住,当时不觉得有用)而被我跳过,看来她属于耐看型。

因为爱上了synchronized,所以更了解synchronized,当我再次同时写下单例和synchronized时,心中不禁感慨万分,我做了一个假设,如果一个web程序同时有1W个线程访问我写的单例时,那将是多么庞大而华丽的一个阵容,它们将排队,一个一个走过我的synchronized,想到这里我不禁为排在最后的这些线程捏了一把冷汗,这要排多久!如此一来我深爱的synchronized是多么的严厉和霸道啊。

于是我的同情心和爱心同时跑出来,到底该不该舍弃synchronized的呢?真是应验一句话:因为爱所以痛。杯具。

待续......
分享到:
评论
1 楼 Reset 2011-12-15  
public class Singleton(){
     private volatile static Singleton singleton;

     private Sington(){};
     public static Singleton getInstance(){
     if(singleton == null){
         //synchronized (Singleton.class);
              if(singleton == null){
                 singleton = new Singleton();
                                   }
                          }
          //}
              return singleton;
        }
}

相关推荐

    设计模式单例模式和工厂模式综合应用

    "设计模式单例模式和工厂模式综合应用"的主题聚焦于两种常用的设计模式:单例模式和工厂模式,并探讨它们如何协同工作来实现高效、灵活的代码结构。这个主题尤其适用于Java编程语言,因为Java的面向对象特性使得设计...

    QT静态单例管理信号和槽

    QT静态单例管理信号和槽是Qt框架中一种常见的设计模式,用于确保应用程序中只有一个特定类的实例。在Qt编程中,单例模式通常用于管理全局资源,如数据库连接、配置文件读取或系统设置。这里我们将深入探讨如何在Qt中...

    单例多例模式

    单例多例模式是软件设计中的一种重要概念,它们之间的区别和选择对系统的性能和稳定性有着重要的影响。本文将详细讲解单例多例模式的定义、产生方式、使用场景和选择标准。 一、什么是单例多例? 单例(Singleton...

    单例省市级联

    本案例中的“单例省市级联”就是将单例模式应用于级联下拉列表的实现,使得省级和市级的数据加载和管理更为高效。 首先,我们要理解什么是单例模式。在面向对象编程中,单例模式确保无论何时,当需要一个特定类的...

    耦合和单例模式的理解

    ### 耦合和单例模式的理解 #### 高内聚和低耦合 在软件工程领域中,**高内聚**与**低耦合**是衡量系统设计质量的重要标准。高内聚指的是一个模块内部的功能高度相关,即模块内的各个部分紧密地协同工作以完成特定...

    VC2010工厂模式和单例模式的实现

    自己用VC2010写的工厂模式和单例模式的实现

    单例和策略模式示例

    今天我们将深入探讨两种常用的设计模式:单例模式和策略模式。这两种模式在实际开发中有着广泛的应用,它们分别解决了不同的问题,提高了代码的可维护性和可扩展性。 首先,我们来看单例模式。单例模式是一种保证一...

    OC单例模式讲解

    在Objective-C (简称OC)中,单例模式非常常用,尤其是在需要对资源进行统一管理和控制的场景下。 #### 二、为什么使用单例模式? 1. **节省资源**:通过单例模式可以保证系统内存中该类只存在一个对象,从而避免了...

    43丨单例模式(下):如何设计实现一个集群环境下的分布式单例模式?1

    单例模式是一种设计模式,旨在确保一个类只有一个实例,并提供全局访问点。在单例模式中,类的构造函数是私有的,防止外部直接创建对象,而是通过静态...在实际应用中,应根据系统的需求和环境选择合适的单例实现方式。

    C++单例设计模式,单例模式

    C++单例设计模式,单例模式 C++单例设计模式,单例模式

    运算符单例友元重载作业

    在编程领域,运算符单例友元重载是一种高级技巧,它涉及到面向对象设计模式、类的内部工作原理以及C++中的友元函数和运算符重载。让我们深入探讨这些概念,以便更好地理解和应用。 首先,我们要理解什么是“单例...

    单例模式和多例模式

    单例模式和多例模式是软件设计模式中的两种重要类型,它们主要用来控制类的实例化过程,确保在系统中某一类只有一个实例或者多个实例。 单例模式是一种限制类的实例化过程,使得一个类在整个应用程序中只能有一个...

    设计模式——单例模式

    实现单例模式主要有两种方式:饿汉式和懒汉式。 ### **饿汉式单例模式** 饿汉式单例模式在类加载时就完成了实例化,因此也称为静态初始化。这种方式保证了线程安全,但可能会造成不必要的资源浪费,因为即使未使用...

    unity中涉及的三种单例模式

    在Unity游戏开发中,单例模式是一种常用的编程设计模式,它...C#经典单例和Unity内置单例提供了基本的实现,而线程安全的单例模式则是针对可能存在的多线程环境做出的优化。开发者可以根据项目需求选择适合的单例模式。

    7种单例模式

    下面将详细介绍七种常见的单例模式实现方式,并结合多线程环境和反序列化测试进行讨论。 1. **饿汉式单例**: 这是最简单的单例实现,它在类加载时就创建了实例,因此是线程安全的。 ```java public class ...

    提供外界访问的两个方法和单例类一起使用

    提供外界访问的两个方法!--和单例类一起使用!面试时经常用到!

    设计模式之单例模式(结合工厂模式)

    在项目中,`src`目录可能包含了这些设计模式的源码示例,可以用来学习和理解如何实际应用单例模式和工厂模式。通过阅读和分析这些代码,你可以更深入地理解这两种模式的实现细节及其在实际开发中的作用。同时,也...

    经典工厂单例模式典范

    在软件设计模式的世界里,"工厂单例模式典范"是一个重要的概念,它结合了工厂模式和单例模式的优势,以解决特定的编程问题。工厂模式是一种创建型设计模式,而单例模式则是一种结构型设计模式。这两种模式的结合使得...

Global site tag (gtag.js) - Google Analytics