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

双重检查锁定及单例模式,线程安全

阅读更多
  自己以前认识的单例模式很简单:
  方式一:
 public class TestSecrity {
	private static TestSecrity test = null;
	public static synchronized TestSecrity getInstance() {
		if(test == null) {
			test = new TestSecrity();
		}
		return test;
	}
	
	private TestSecrity() {
		
	}
  }

  方式二:
 
 public class TestSecrity {
	private static TestSecrity test = new TestSecrity ();
	public static TestSecrity getInstance() {
		return test;
	}
	
	private TestSecrity() {
		
	}
  }


  原来以为这两种方式写好之后就没有问题,
今天拜读了下面的文章,才知道第一种是有问题;而且即使是第一种方式,每次调用都会要同步,众所周知,同步是要消耗性能的,所以很多人想了一个办法:
进行双重检查锁定,但是这样仍然不能保证线程安全。
具体看下面的收藏贴,
收藏贴
http://www.ibm.com/developerworks/cn/java/j-dcl.html

  另外:当多个线程访问同一个对象的方法的时候,线程是单独保存一份数据在栈中,也就是说方法中的局部变量是不会被共享的,不会存在线程安全问题。
分享到:
评论
1 楼 因为java所以java 2010-11-07  
对单例又加深了一次理解

相关推荐

    线程安全的单例模式

    线程安全的单例模式 线程安全的单例模式 线程安全的单例模式

    Java中懒汉单例设计模式线程安全测试

    Java中懒汉单例设计模式线程安全测试,单例设计模式的测试

    单例模式线程安全的三种表达

    单例模式三种线程安全的表达方式,其中枚举方式的单例是最安全的

    Java 单例模式线程安全问题

    主要介绍了Java 单例模式线程安全问题的相关资料,希望通过本文大家能了解掌握单例模式中线程安全的使用方法,需要的朋友可以参考下

    使用C++11实现线程安全的单例模式

    C++11实现线程安全的单例代码和测试代码,包含singleton.h,main.cpp,希望帮助到大家。

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

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

    c++单例模式线程日志类

    自己写的c++实现的单例模式日志类。支持多线程、日志等级、可输出每条日志的输出时间(精确到毫秒级),日志级别,支持可变长参数、标准格式化输出。 代码中包含VS2010示例程序,使用方便。

    synchronized与单例的线程安全

    synchronized与单例的线程安全问题,博客地址:https://www.jianshu.com/p/486ed9c8662a

    单例模式的多种实现.docx

    单例模式的七种实现方法以及分析,可以...3.5双重检查实现单例模式 10 3.6使用静态内部类实现单例模式 12 3.7使用枚举类实现单例模式 13 4.单例模式怎么用才合理? 14 4.1测试 14 4.2无边界 15 5.设计模式学习总结: 15

    浅议单例模式之线程安全(转)

    NULL 博文链接:https://javawl.iteye.com/blog/1831804

    多线程单例模式并发访问

    深入浅出:讲解单例模式,多线程安全和并发访问问题.让你轻松应对面试

    C++ 多线程和多线程下的单例模式

    本资源描述了C++11 中多线程的创建,C++11中std命名空间中将boost库中的Thread加入,boost多线程从准标准变为标准,其中还介绍了C++ 多线程下的单例模式的使用,本文档为txt文档

    java实现单例模式-双重校验锁模式(线程安全)

    双重校验锁模式结合了懒汉模式和饿汉模式的优点,既实现了延迟加载,又保证了线程安全。你可以根据需求选择合适的单例模式实现方式。

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

    Qt两种方法实现多线程的开启,及子线程的安全结束线程,及QMutex加锁,Qt单例化实现

    多线程并发下的单例模式-源码

    该资源是多线程并发下的单例模式-源码,几乎包含了所有方式实现的单例模式,并且能够确保在多线程并发下的线程安全性。 读者可结合本人博客 http://blog.csdn.net/cselmu9?viewmode=list 中的《线程并发之单例模式...

    这可能是最全的单例模式了

    双重检查锁定的单例模式4. 静态内部类实现单例模式5. 饿汉实现单例模式6. 饿汉变种实现单例模式7. 枚举实现单例模式static修饰下是怎么做到线程安全的?完全不使用synchronized实现单例模式1. CAS(AtomicReference...

    Qt线程安全单例模式写日志模式

    保证一个类只有一个实例,并提供一个访问它的全局访问点,使得系统中只有唯一的一个对象实例,具有线程安全,多线程测试通过。 1.打开日志并创建日志文件夹 默认为程序启动路径 2.清理日志文件下日志数量 默认保留90...

    7种单例模式

    设计模式之七种单例模式代码及ppt,包含多线程环境测试和反序列化测试

    单例模式,single

    在本月的专栏中,David Geary探讨了单例模式以及在面对多线程(multithreading)、类装载器(classloaders)和序列化(serialization)时如何处理这些缺陷。 单例模式适合于一个类只有一个实例的情况,比如窗口管理器...

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

    主要介绍了python实现线程安全的单例模式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

Global site tag (gtag.js) - Google Analytics