单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。
这样的模式有几个好处:
1、某些类创建比较频繁,这是一笔很大的系统开销。
2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。
一、懒汉模式
public class Singleton {
// 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载
private static Singleton instance = null;
//私有构造方法,禁止私自创建对象
private void Singleton(){}
// 创建单例对象
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class){// 持有类锁,保证线程安全
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
二、饿汉模式
public class Singleton {
// 服务器启动时创建
private static Singleton instance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
}