单例模式(饿汉模式和懒汉模式)
Posted 逍遥ovo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式(饿汉模式和懒汉模式)相关的知识,希望对你有一定的参考价值。
饿汉模式
饿汉模式是线程安全的,不需要关键字来保证线程安全。
class Singleton {
// 期望 singleton 是一个单例, 也就是只有一个实例
private static final Singleton instance = new Singleton();
public static Singleton getInstance() {
return instance;
}
private Singleton() {
}
}
懒汉模式
懒汉模式是线程不安全的,因此需要加
synchronized
和volatile
关键字修饰。
为什么要使用关键字修饰,可以参考我写的另一篇博客 懒汉设计模式使用 volatile 关键字和两个 if 判断的原因
class Singleton {
// 3. 加 volatile 关键字
volatile private static Singleton instance = null;
public static Singleton getInstance() {
// 2. 外层判断
if (instance == null) {
// 1. 内层加锁判断
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
}
private Singleton() {
}
}
以上是关于单例模式(饿汉模式和懒汉模式)的主要内容,如果未能解决你的问题,请参考以下文章