转自:http://hi.baidu.com/1039580989/blog/item/c65a1e5693c7f9d8b645ae0d.html
/**
* 饿汉式单例类
* @author wang
*/
public class Singleton {
private Singleton(){}
private static Singleton instance=new Singleton();
private static Singleton getInstance(){
return instance;
}
}
此方法不用考虑线程同步
问题
/**
* 懒汉式单例类
* @author wang
*/
public class Singleton {
private Singleton(){}
private static Singleton instance;
public static synchronized Singleton getInstance(){
if(instance==null){
return instance=new Singleton();
}else{
return instance;
}
}
}
为了线程同步问题,加上synchronized关键字
。但是效率会下降
/**
* 内部类实现
* @author wang
*/
public class Singleton_Holedr {
private Singleton_Holedr(){}
//内部类
private static class SingletonHoledrContainer{
private static Singleton_Holedr instances=new Singleton_Holedr();
}
public static Singleton_Holedr getInstances(){
return SingletonHoledrContainer.instances;
}
}
上面程序强制初始化了SingletonHoledr类,但如果我们还不需要使用它的该类的唯一实例,
但系统不会初始化其实内部类
:SingletonHoledr
因此如果系统只有等到真正调用Singleton_Holedr的getInstances()方法时才会初始化
SingletonHoledrContainer类
/**
* 双检索单例模式
* @author wang
*/
public class Singleton_Lock {
private Singleton_Lock(){}
private static Singleton_Lock instances;
private static Singleton_Lock getInstances(){
if(instances==null){
synchronized (Singleton_Lock.class) {//保证了同一时间只能有一个对象访问此同步块
if(instances==null){
instances=new Singleton_Lock();
}
}
}
return instances;
}
}
/**
*利用枚举单例模式
*/
public enum SingletonExample {
INSTANCE;
public static SingletonExample getInstance(){
return INSTANCE;
}
}
分享到:
相关推荐
简单的单例模式举例Singleton 分为恶汉式 懒汉式
java Singleton单例模式 java Singleton单例模式
一个单例模式的晋级过程(饿汉-懒汉-DCL-IoDH-枚举) ...单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一
单例模式的特点有三: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。 Singleton模式包含的角色只有一个,就是Singleton。Singleton拥有一个私有构造函数,...
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个...
设计模式C++学习之单例模式(Singleton)
Java面向对象(高级)-- 单例(Singleton)设计模式
单例模式 Singleton 单例模式线程安全问题和拓展
此示例展示了Qml 的单例模式(类似全局对象,只生成一次实例,可全局使用) surfsky.cnblogs.com
DataSource的单态模式(SingleTon)程序---马克-to-win java视频 数据源 单态模式 dataSource Singleton
在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样有几个好处: 1、某些类创建比较频繁,对于一些大型的对象,这可以节省一笔很大的系统开销。 2、省去了new操作符,降低了系统内存的使用频率...
深入分析java单例模式什么是单例模式单例模式的常见写法一、饿汉式单例优点缺点示例二、懒汉式单例示例1(普通写法)示例2(synchronized写法)示例3(DCL写法)示例4(内部类写法)三、注册式单例示例1(容器式)示例2(枚举式...
单例模式(Singleton)的6种实现
单例模式(Singleton)
设计模式总结-模板设计模式,单例模式(singleTon)
C++11实现线程安全的单例代码和测试代码,包含singleton.h,main.cpp,希望帮助到大家。
一个产生随机数的例子,整个应用程序中只需要一个类的实例来产生随机数,客户端程序从类中获取这个实例,调用这个实例的方法nextInt(),公用的方法访问需要进行同步,这是单例模式需要解决的同步问题。
设计模式系列之01-单例模式(Singleton模式),很好的资源,理论实践结合讲述,逐步更新