1.饿汉式单例模式
所谓饿汉式单例模式,是指当类加载的时候就去创建该类的实例
public class Singleton {
//访问修饰符需要设置为 private
private static Singleton instance = new Singleton();
//构造方法需要设置为 private
private Singleton(){
}
//访问修饰符需要设置为 public
public static Singleton getInstance(){
return instance;
}
}
2.懒汉式单例模式
所谓懒汉式单例模式,是指我们只有在需要获取时才创建该类的实例,而饿汉式单例模式是在类加载的过程中就创建该类的实例。
public class Singleton {
//访问修饰符需要设置为 private
private static Singleton instance = null;
//构造方法需要设置为 private
private Singleton(){
}
//访问修饰符需要设置为 public
public static Singleton getInstance(){
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
注意:在单线程环境下,上面两个单例模式都可以正常工作,但是当处于多线程环境下,仍然可能产生多个实例,这就违背了单例模式的设计初衷,这时候,就需要用到锁的机制,性能最好的,当然就是接下来要介绍的双检测锁机制的单例模式啦。
3.双检测锁机制的单例模式
public class Singleton {
//访问修饰符需要设置为 private,并且是 volatile 的
private static volatile Singleton instance = null;
//构造方法需要设置为 private
private Singleton(){
}
//访问修饰符需要设置为 public
public static Singleton getInstance(){
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。