java 单例模式与线程安全性问题

原创 2018年04月15日 21:19:40

饿汉式

饿汉式就是在变量申明的时候就完成初始化工作

优点:没有线程安全性问题

缺点:在程序加载时,单例模式的实体就已经被创建了,存在性能问题

public class Singleton {
	
	// 私有化构造方法
	private Singleton () {}

	private static Singleton instance = new Singleton();
	
	public static Singleton getInstance() {
		return instance;
	}			
}

懒汉式

懒汉式就是在变量需要使用的时候调用初始化函数进行构造

package com.roocon.thread.t5;

public class Singleton2 {
	
	private Singleton2() {}
	
	private static volatile Singleton2 instance;
	
	/**
	 * 双重检查加锁
	 * 
	 * @return
	 */
	public static Singleton2 getInstance () {
		// 考虑到程序性能,不能直接在方法中加synchronized,应该加在方法块上
		if(instance == null) {
			synchronized (Singleton2.class) {
				if(instance == null) {
					instance = new Singleton2();  // 指令重排序	
					// 申请一块内存空间   // 1
					// 在这块空间里实例化对象  // 2
					// instance的引用指向这块空间地址   // 3
				}
			}
		}
		return instance;
	}
}

用VC++6.0制作图片屏幕保护程序

   VC++可谓神通广大,如果学到家了,或者就掌握了那么一点MFC,你也会感到它的方便快捷,当然最重要的是功能强大。不是吗,从最基本的应用程序.EXE到动态连接库DLL,再由风靡网上的ActiveX...
  • ghj1976
  • ghj1976
  • 2000-12-14 18:32:00
  • 2067

高并发下线程安全的单例模式(最全最经典)

在所有的设计模式中,单例模式是我们在项目开发中最为常见的设计模式之一,而单例模式有很多种实现方式,你是否都了解呢?高并发下如何保证单例模式的线程安全性呢?如何保证序列化后的单例对象在反序列化后任然是单...
  • cselmu9
  • cselmu9
  • 2016-05-11 00:32:23
  • 76844

简单java单例模式 懒汉式、饿汉式以及解决线程安全问题(synchronized)

单例模式(又称设计模式) 一个类只存一个对象(实例)。 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界...
  • qq_37768482
  • qq_37768482
  • 2017-08-24 19:07:28
  • 588

Java五种单例模式与线程安全

转载自:http://blog.chenzuhuang.com/archive/13.html     《设计模式》提出近二十年里,随着面向对象语言发展,单例模式也随之演化,如今其实现形式变得多种多样...
  • janch1
  • janch1
  • 2016-02-25 16:12:58
  • 2708

如何创建线程安全的单例模式?线程安全的Singleton!

单例模式的概念 单例模式就是确保只有一个实例,而且自行实例化并向整个系统传递这个实例,这个类就称作为单例类 单例模式最重要的一个特点就是构造方法私有化。创建单例模式分为懒汉式和饿汉式。 ...
  • a347911
  • a347911
  • 2016-11-24 16:59:35
  • 1995

Java的单例模式是不是线程安全的?

相对多例来说,很多人认为单例肯定是线程安全的。其实单例也不能保证100%线程安全的。解决方法就是创建实例方法中加入Java关键字synchronized。  Java语言的关键字synchronize...
  • qq_31808577
  • qq_31808577
  • 2017-03-25 17:07:27
  • 14546

简单且线程安全的两个单例模式java程序

package com.work.pattern;public class Singleton2 { private static Singleton2 instance = new Singlet...
  • wmj2003
  • wmj2003
  • 2008-06-30 22:15:00
  • 3521

设计模式——单例模式(Java)——考虑多线程环境下的线程安全问题

设计模式——单例模式(Java)——考虑多线程环境下的线程安全问题 一:单例模式概念 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类...
  • ly969434341
  • ly969434341
  • 2016-05-10 21:38:42
  • 2814

单例模式的七种写法, 面试题:线程安全的单例模式

http://cantellow.iteye.com/blog/838473 http://meizhi.iteye.com/blog/537563 转载请注明出处:h...
  • liangxw1
  • liangxw1
  • 2016-05-09 15:53:18
  • 11209

线程安全的单例模式

  • 2012年12月07日 15:29
  • 345KB
  • 下载
收藏助手
不良信息举报
您举报文章:java 单例模式与线程安全性问题
举报原因:
原因补充:

(最多只允许输入30个字)