`
arganzheng
  • 浏览: 103497 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

单例的两种线程安全实现

 
阅读更多

单例的两种线程安全实现
2011-04-09 星期六 多云 闷热

1. 利用static final进行启动时加载
例子:
public class Configuration{
    private  static final Configuration instance = new Configuration();

    private Configuration(){} // 似有的构造函数,确保单例

    public static Configration getInstance(){ return instance; }
}

2. Lazy Loaded
public class Configuration{
    private Configuration instance;

    private Configuration() { }
    
    Syncrinize public static Configuration getInstance(){
        if(instance == null){
            instance = new Configuration();
        }
        return instance;
 }
}

分享到:
评论
4 楼 arganzheng 2011-04-20  
备战备荒 写道
貌似第二种的单例是县城不安全的吧。

使用Synchonized可以确保线程同步和主内存与线程工作内存之间的同步,不会有问题的。
3 楼 arganzheng 2011-04-13  
@备战备荒: 如果还不相信,这里有一篇step-by-step,并且包含测试例子的好文章,非常不错,强烈推荐:
http://www.javaworld.com/javaworld/jw-04-2003/jw-0425-designpatterns.html
2 楼 arganzheng 2011-04-13  
备战备荒 写道
貌似第二种的单例是县城不安全的吧。

这里有个step-by-step的介绍:
http://www.javabeginner.com/learn-java/java-singleton-design-pattern
应该没有问题,还望指教!
1 楼 备战备荒 2011-04-12  
貌似第二种的单例是县城不安全的吧。

相关推荐

    C++两种线程安全的单例模式的实现

    使用"懒汉模式"与"饿汉模式"实现c++的单例模式,并且确保了单例模式的第一次实例化的线程安全,以及程序结束时,单例对象的资源收回,以防内存资源的泄漏

    Qt两种方法实现多线程并安全结束线程及QMutex加锁Qt单例化实现

    本主题将详细探讨如何使用Qt的QThread类来创建和管理线程,并且安全地结束线程,同时结合QMutex进行线程同步,以及如何实现Qt的单例模式。 1. **QThread的使用**: - **创建线程**: 在Qt中,创建线程通常是通过...

    线程安全的单例模式

    在单例模式的实现中,通常有两种基本的方法:饿汉式和懒汉式。 1. **饿汉式单例**: ```java public final class EagerSingleton { private static EagerSingleton singObj = new EagerSingleton(); private ...

    synchronized与单例的线程安全

    "synchronized"关键字和单例模式是确保线程安全的两种常见手段。本文将详细探讨这两个概念及其在实现线程安全中的作用。 一、synchronized关键字 synchronized是Java中的一个关键同步机制,用于控制对类或对象的...

    spring单例引起的线程安全问题

    在 Spring 框架中,bean 的实例化策略分为两种:单例(Singleton)和多例(Prototype)。单例模式意味着在整个 Spring 容器中,对于一个给定的 bean 定义,只会存在一个实例。这通常通过 @Scope("singleton") 注解来...

    详解python实现线程安全的单例模式

    然而,如果我们想要在类级别实现线程安全的单例模式,就需要考虑多线程环境下的并发问题。 在给出的代码中,首先定义了一个装饰器`Singleton`,它的目的是确保每次调用时返回的是同一个实例。装饰器内部维护了一个...

    两种单例实现方式

    两种单例实现方式 单例模式是指一个类只有一个实例,并且提供了一个全局的访问点来访问该实例。单例模式是一种常用的设计模式,它可以确保某个类只有一个实例,并且提供了一个全局的访问点来访问该实例。 在 Java ...

    JAVA单例模式的几种实现方法

    - **复杂性增加**:相对于前两种方式,其实现更为复杂,需要考虑异常处理等问题。 - **动态加载**:可以通过传递不同的类名动态创建单例对象。 ### 总结 单例模式是软件开发中常用的设计模式之一,用于确保一个类...

    多线程单例模式并发访问

    总结起来,多线程环境下的单例模式实现需要注意线程安全问题,尤其是懒汉式单例,需要采取适当的同步措施来防止多线程环境下的实例化问题。此外,对于不同场景的需求,可以选择不同的实现方式来优化性能和资源使用。

    线程安全的单例模式的几种实现方法分享

    以下是对几种线程安全单例模式实现方式的详细解释: 1. **饿汉式单例**: 饿汉式单例在类加载时就完成了实例化,因此它是线程安全的。这种方式简单直接,但缺点是如果单例对象不需要立即使用,却已经创建,可能...

    详解C++实现线程安全的单例模式

    单例模式分为两种主要实现方式:饿汉模式和懒汉模式。 1. **饿汉模式**: 饿汉模式在类加载时就完成了实例化,因此它是线程安全的。在提供的示例中,使用模板类`singleton<T>`定义了一个静态成员变量`m_instance`...

    c#单例3种实现

    .NET Framework 4.0引入了`System.Lazy<T>`类,可以方便地实现线程安全的延迟初始化单例。 ```csharp public sealed class Singleton { private static readonly Lazy<Singleton> lazy = new Lazy(() => new ...

    从C++单例模式到线程安全详解

    然而,在多线程环境下,如果不正确实现,单例模式可能会导致线程安全问题。 首先,让我们看看一个典型的教科书式的C++单例模式实现: ```cpp class CSingleton { public: static CSingleton* getInstance() { if...

    Java多线程-解决单例模式中的懒汉式的线程安全问题

    **饿汉式**是一种非常典型的单例模式实现方式,其特点是在类加载时就完成了实例化工作,因此不会出现线程安全问题。由于类加载是线程安全的,所以在类加载过程中创建的实例自然也是线程安全的。 **格式示例**: ``...

    java多线程之线程安全的单例模式

    另一种线程安全且高效的单例实现是利用Java类加载机制: ```java public class Singleton { private Singleton() {} private static class SingletonHolder { private static final Singleton INSTANCE = new ...

    设计模式-单例模式(讲解及其实现代码)

    这种方式结合了前两种方法的优点,既延迟初始化又保证线程安全。 ```java public class Singleton { private volatile static Singleton instance; private Singleton() {} public static Singleton ...

    老生常谈C++的单例模式与线程安全单例模式(懒汉/饿汉)

    另一种线程安全的懒汉实现是利用C++的静态变量初始化顺序,确保在多线程环境下只实例化一次: ```cpp class Singleton { protected: Singleton() { pthread_mutex_init(&mutex); } public: static pthread_mutex...

    数据库单例实现

    为了解决线程安全问题,我们可以采用以下两种方式: 3. 懒汉式(同步方法): 通过在`getInstance()`方法上添加`synchronized`关键字,确保同一时间只有一个线程能执行该方法。 ```java public class ...

    27_多线程_第2天(线程安全、线程同步、等待唤醒机制、单例设计模式)_讲义.doc

    其中,DCL方式是最常用的一种线程安全的单例实现,利用了volatile关键字和synchronized关键字来确保线程安全。 总结来说,多线程编程中,理解和掌握线程安全、线程同步以及等待唤醒机制是非常重要的。它们能够帮助...

    Java线程安全中的单例模式

    另一种线程安全的单例实现方式是使用枚举。这种方式既简单又线程安全,如下所示: ```java public enum Singleton { INSTANCE; public void method() { System.out.println("Singleton Method!"); } public ...

Global site tag (gtag.js) - Google Analytics