java中单例模式(饿汉式、懒汉式)的使用

原创 2015年07月07日 13:19:43

单例模式的使用大致分为两种:饿汉式和懒汉式

饿汉式:需要用的时候判断有没有,如果有就返回实例,如果没有就生成实例

public class Singleton {
	//私有化构造函数,防止外界再生成其他实例
	private Singleton(){
	}
	//定义实例,同样也是私有,防止通过类直接获取
	private static Singleton instance;
	//提供外部访问接口
	public Singleton getInstance(){
		if(instance == null){
			instance = new Singleton();
		}
		return instance;
	}
}

饿汉式看上去虽然很完美,但是在多线程环境下可能会产生多线程问题,慎用。


懒汉式:实例已经生成好,就等你来用了!

第一种:

public class Singleton {

	//私有化构造函数,防止外界再生成其他实例
	private Singleton() {
	}
	
	private static Singleton instance = new Singleton();
	
	//提供外部访问接口
	public static Singleton getInstance() {
		return instance;
	}
}
第二种:

public class Singleton {

	private Singleton() {
	}

	// 此处使用一个内部类来维护单例
	private static class SingletonFactory {
		private static Singleton instance = new Singleton();
	}

	public static Singleton getInstance() {
		return SingletonFactory.instance;
	}
}

上面两种懒汉式都是线程安全的,都是推荐的。

区别是第一种在jvm加载类的时候就new出了实例,第二种是调用的时候new出实例。所以如果instance较大或者加载时间较长的时候,还是推荐使用第二种懒汉式。

补充说下,单例模式的构造方法以及私有化了,所以上面介绍的单例模式的类是不能被继承的。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java 单例模式:饿汉式与懒汉式

饿汉式单例模式示意图: 饿汉式单例模式:HurrySingleton.java package pattern.singleton; /**  * -------------------...

Java实现单例模式之饿汉式、懒汉式、枚举式,带测试。

Java实现单例的3种普遍的模式,恶汉式、懒汉式、枚举式。

单例模式懒汉式与饿汉式java讲解

单例模式是常用的设计模式之一,实质就是确保一个类只有一个实例对象,分为懒汉式和饿汉式两种。 类图如下: 一、懒汉式单例模式 1.懒汉式单例模式原始版: 开始设置实例对象为空,只要对象为空的话就返回...

Java之单例模式(饿汉式、懒汉式)

概念:   Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍两种:懒汉式单例、饿汉式单例。   单例模式有以下特点:   1、单例类只能有一个实例。   2、单例类...

Java设计模式中的单例模式的懒汉式和饿汉式

单例设计模式是一种很常见的设计模式 在这里介绍两种单例设计模式 懒汉式与饿汉式 一、先说一说单例设计模式的特点: >>1.单例设计模式保证一个类只有一个实例。 >>2.要提供一...

设计模式-单例模式(饿汉式及懒汉式的Java实现)

单例模式单例模式在程序设计中使用的频率非常之高,其设计的目的是为了在程序中提供唯一一个对象(保证只被构造一次),例如写入日志的log对象,windows的任务管理器实现(只能打开一个)。这里主要介绍单...
  • zjx409
  • zjx409
  • 2015-08-03 22:57
  • 3574

单例模式三种实现----饿汉式 饱汉式(懒汉式) 双重锁模式--------(java复习)

在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。 一、什么时候使用单例模式: 当实例存...

JAVA单例模式I 饿汉式 懒汉式 学习笔记

单例模式 Singleton Model 熟悉JAVA类加载的同学一定知道JAVA中每次通过new关键字实例化对象这种操作会在我们的JAVA常量池中Heap区域申请一片区域内存,如果大量使用对象实例...

单例模式の懒汉式和饿汉式

单例模式,是用来解决一次只能实例化一个对象的问题。 根据对象实例化的先后,有两种实现方式: 懒汉式 饿汉式 下面是在代码中有详细的说明两种实现方法package 设计模式; /* * 单例...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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