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

延迟加载线程安全的单例模式

阅读更多
public class ThreadSafeSingleton {
        /**
         *volatile 具有synchronized的可见特性,
         *也就是说线程能够自动发现volatitle修饰属性的最新值
         */
	private volatile static ThreadSafeSingleton instance = null;
	
	private ThreadSafeSingleton() {
		
	}
	
	public ThreadSafeSingleton getInstance() {
		if (instance == null) {
			synchronized (ThreadSafeSingleton.class) {
				instance = new ThreadSafeSingleton();
			}
		}
		return instance;
	}
}


另外一种写法
public class LazyLoadedSingelton {
	private LazyLoadedSingelton() {
		
	}
	
	private static class LazyHolder {
		private final static LazyLoadedSingelton instance = new LazyLoadedSingelton();
	}
	
	public static LazyLoadedSingelton getInstance() {
		return LazyHolder.instance;
	}
}
分享到:
评论

相关推荐

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

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

    java实现单例模式-静态内部类模式(线程安全)

    静态内部类模式结合了懒汉模式和饿汉模式的优点,既实现了延迟加载,又保证了线程安全。

    设计模式第二天学习内容

    单例模式: 懒汉式:延迟加载方式 饿汉式:立即加载 面试绝对面的都是懒汉式的问题。 单例模式如果使用不当,就容易引起线程安全问题。 * 饿汉式不存在线程安全问题,但是它一般不被使用,因为它会浪费内存的空间 * ...

    项目中用到的jdbc连接 单例模式

    /** * JDBCConnection for Singleton * 双重检查加锁方法,由于JVM内部的问题,该方法还是有漏洞的。 * 假设线程1进入到步骤2,执行步骤3未... * 优点:延迟加载,而且不需要同步。 * @author Zephyr.Qiao * */

    java实现单例模式-懒汉模式(线程不安全

    懒汉模式是延迟加载的方式,在首次调用getInstance()方法时才会创建实例;

    C#单例模式(Singleton Pattern)实例教程

    主要介绍了C#单例模式(Singleton Pattern)的实现方法,主要讲述了即时加载的单例模式、延迟加载的单例模式与线程安全的单例模式,需要的朋友可以参考下

    浅谈C#单例模式的实现和性能对比

    单例的实现方式有很多种,但从最简单的实现(非延迟加载,非线程安全,效率低下),到可延迟加载,线程安全,且高效的实现,它们都有一些基本的共同点: 单例类都只有一个private的无参构造函数 类声明为sealed

    java-thread-safe-singleton-pattern.rar_starvation

    一个java线程安全的单例模式:饥饿模式和延迟加载

    DesignPattern:Java设计模式

    只要应用中不使用内部类 JVM 就不会去加载这个单例类,也就不会创建单例对象,从而实现懒汉式的延迟加载和线程安全。 饿汉模式 否 慢 快 是 单例对象初始化非常快,而且占用内存非常小的时候这种方式是比较合适的,...

    hibernate操作数据库笔记

    注:由于SessionFactory是重量级对象,很耗资源,所以在获取SessionFactory对象时最好用单例模式获取,以确保一个应用中只有一个SessionFactory对象存在和线程安全,由于Session对象 是非线程安全的(尽管创建一个...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    单例模式 行为模式 责任链模式 命令模式 解释器模式 迭代器模式 中介者模式 备忘录模式 观察者模式 状态模式 策略模式 模板方法模式 访问者模式 设计案例 UML 架构 系统架构能力 基本理论 扩展性...

    java面试题库2021.pdf

    ②延迟加载、 性能优化 ③HQL 查询、 条件查询、 SQL 查询 ④二级缓存与查询缓存 3、 Struts ①MVC 模式与 Struts 体系 4、 mybatis 5、 MVC 框架 6、 各框架对比与项目优化 7、 JPA ①EJB 三、 Java web 开发核心...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【设计模式】写一个单例(延迟加载,高性能) 144 【容器】Apache Http Server和Tomcat 区别 145 【版本控制】GIT与SVN的区别 146 【高并发】Java高并发解决方案 148 HTML静态化 149 图片服务器分离 149 数据库集群和库...

    《iOS6开发指南》精彩书摘

    iOS中开发性能优化方法,其中包括:内存优化、资源文件优化、延迟加载、持久化优化、使用可重用对象、多线程以及程序编译参数等方面介绍性能优化。 第18章“管理好你的程序代码——代码版本控制”。学习如何使用Git...

    java面试题

    71.7. Hibernate是如何延迟加载? 60 71.8. Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 60 71.9. 说下Hibernate的缓存机制 60 71.10. Hibernate的查询方式 60 71.11. 如何优化Hibernate? 61 71.12...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例088 单例模式的应用 109 实例089 祖先的止痒药方 110 实例090 统计图书的销售量 111 实例091 汉诺塔问题求解 112 实例092 不能重写的方法 113 5.3 包装类的使用 114 实例093 将字符串转换成整数 114 实例094 ...

Global site tag (gtag.js) - Google Analytics