`
arganzheng
  • 浏览: 101553 次
  • 性别: 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两种方法实现多线程的开启,及子线程的安全结束线程,及QMutex加锁,Qt单例化实现

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

    单例模式分为懒汉模式,跟饿汉模式两种。 首先给出饿汉模式的实现 正解: template class singleton { protected: singleton(){}; private: singleton(const singleton&){};//禁止拷贝 singleton& operator=...

    线程相关的单例模式

    本工程实现了一种利用静态工厂和单例模式两种模式思路设计的线程相关的单例模式。

    Java多线程中的单例模式两种实现方式

    主要介绍了Java多线程中的单例模式两种实现方式的相关资料,需要的朋友可以参考下

    单例模式,属于创建类型的一种常用的软件设计模式 通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中

    通常单例模式在Java语言中,有两种构建方式: 懒汉式—线程不安全:最基础的实现方式,线程上下文单例,不需要共享给所有线程,也不需要加synchronize之类的锁,以提高性能。 懒汉式—线程安全:加上synchronize之类...

    c# 单例模式的实现方法

    单例模式的实现分为两种:饿汉式和懒汉式。前者是在静态构造函数执行时就立即实例化,后者是在程序执行过程中第一次需要时再实例化。两者有各自适用的场景,实现方式也都很简单,唯一在设计时要考虑的一个问题就是:...

    设计模式经典案例之单例模式

    单例模式主要有懒汉式和饿汉式两种实现,饿汉式不会有线程安全的问题,但是提前构造对象占用了一定的资源,如果对内存要求较低的场景可以使用饿汉式实现;懒汉式应使用DCL机制来避免多线程竞争资源的问题,并且懒汉...

    Objective C 单例模式设计源码

    下面让我们主要看一下前两种方式。 第一种方式,用new方法初始化其实是第二种方式的总和,当调用new方法时,其实是先调用了alloc方法进行isa(is a pointer)操作,创建指针,指向内存中的数据结构,紧接着调用了init...

    Java多线程下的单例模式参考

    主要演示多线程下的单例模式,分别演示了lock和synchronized两种方案,希望能给大家做一个参考。

    如何在 C++ 中实现一个单例类模板

    在实际工程中,如果一个类的对象重复持有资源的成本很高,且对外接口是线程安全的,我们往往倾向于将其以单例模式管理。 此篇我们在 C++ 中实现正确的单例模式。 选型 在 C++ 中,单例模式有两种方案可选。 一是...

    [创建型模式] 单例模式(Singleton Pattern)

    单例就是单个对象的意思,指在系统运行期间,一个类最多只能创建一个对象,且该类能自行创建这个对象的一种编码设计模式。 单例模式有两个特点: 在系统的整个生命周期内,单例对象最多只能有一个 单例对象必须由...

    常见设计模式—单例模式(Singleton)

    有很多直接把单例分成很多种,这里我就分两个大类(饿汉懒汉)在这里说啦。 单例模式(Singleton Pattern)是设计模式中最简单的模式之一,属于创建型模式。这种设计模式主要是类的对象只有一个实例,不需要每次new ...

    优化的GifView

    播放gif也调研了有一段时间,主要考虑了两种实现方式: 1、Android里自行解码实现; 2、通过webview借助html5来实现 WebView中可以实现gif的播放 但是效率上不太好,另外还有缩放等等问题,没有采用。 Android...

    C#中的五种单例模式(SIngleton)

    1. 写法一(只适用于单线程环境) public sealed class Singleton1 { private Singleton1(){} private static Singleton1 instance = null; public static Singleton1 Instance ...若两个线程同时判读instan

    java核心面试

    线程 单例模式下的线程安全http://blog.sina.com.cn/s/blog_75247c770100yxpb.html map集合 集合数据结构及方法的使用 多线程 线程进程 线程状态 线程状态的改变 sql :临时表、游标、存贮过程、触发机制...

    java核心面试技术点

    线程 单例模式下的线程安全http://blog.sina.com.cn/s/blog_75247c770100yxpb.html map集合 集合数据结构及方法的使用 多线程 线程进程 线程状态 线程状态的改变 sql :临时表、游标、存贮过程、触发机制...

    JAVA-SSH面试题

    如何控制两种框架中的单例模式? struts1.2和struts2.0的对比 a、Action类: struts1.2要求Action类继承一个基类。struts2.0 Action要求继承ActionSupport基类 b、线程模式 struts1.2 Action是单例模式的并且...

Global site tag (gtag.js) - Google Analytics