单例模式下的饿汉和懒汉模式
时间: 2024-04-12 22:22:52 浏览: 104
java 单例模式(懒汉式与饿汉式)
5星 · 资源好评率100%
单例模式是一种设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来访问该实例。在单例模式中,饿模式和懒汉模式是两种见的实现方式。
1. 饿汉模式:
饿汉模式指在类加载的时候就立即创建对象实例。它的特点是线程安全,因为在类加载的过程中,只有一个线程能够执行该过程,所以不会出现多线程竞争的情况。饿汉模式的代码示例如下:
```java
public class HungrySingle {
private static HungrySingle instance = new HungrySingle();
private HungrySingle() {
// 私有构造方法
}
public static HungrySingle getInstance() {
return instance;
}
}
```
2. 懒汉模式:
懒汉模式是指在需要使用对象实例时才进行创建。它的特点是延迟加载,只有在第一次调用getInstance()方法时才会创建对象实例。懒汉模式的代码示例如下:
```java
public class LazySingle {
private static LazySingle instance;
private LazySingle() {
// 私有构造方法
}
public static synchronized LazySingle getInstance() {
if (instance == null) {
instance = new LazySingle();
}
return instance;
}
}
```
需要注意的是,懒汉模式在多线程环境下可能会出现线程安全问题,因为多个线程可能同时进入if语句块,导致创建多个实例。为了解决这个问题,可以使用双重检查锁定或者静态内部类的方式来实现线程安全的懒汉模式。
阅读全文