Java单例模式懒汉模式代码
时间: 2023-07-03 17:32:11 浏览: 124
以下是一个使用懒汉式单例模式的 Java 示例代码:
```java
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
```
在这个示例中,Singleton 类的构造函数被声明为私有的,这意味着它不能从类的外部访问。Singleton 类包含一个静态成员变量 instance,但是它不会在类加载时被初始化。getInstance() 方法首先检查 instance 是否为 null,如果是,则创建一个新的 Singleton 对象并将其赋值给 instance。否则,直接返回 instance。由于懒汉式单例模式只有在需要时才会创建对象,因此也称为延迟加载模式。需要注意的是,在多线程环境下,getInstance() 方法可能会被多个线程同时调用,导致创建多个 Singleton 实例。为了解决这个问题,可以使用双重检查锁定或者静态内部类等方式实现线程安全的懒汉式单例模式。
相关问题
java代码单例模式懒汉式
懒汉式单例模式的实现方式是在第一次调用时才创建对象。以下是Java代码实现:
```java
public class LazySingleton {
private static LazySingleton instance;
private LazySingleton() {}
public static LazySingleton getInstance() {
if(instance == null) {
instance = new LazySingleton();
}
return instance;
}
}
```
在上面的代码中,私有构造函数确保了只能通过getInstance()方法获取实例。getInstance()方法中,如果没有创建实例,就会创建一个新的实例并返回,否则直接返回已有的实例。
需要注意的是,这种实现方式是线程不安全的,如果多个线程同时调用getInstance()方法,有可能会创建出多个实例。可以通过加锁来解决线程安全问题,但会导致性能下降,因此通常建议使用饿汉式单例模式。
用Java实现单例模式 懒汉式
单例模式的懒汉式实现可以按照以下步骤:
1. 将类的构造函数私有化,以免在外部创建实例。
2. 创建一个静态变量来保存类的唯一实例,初始值设为 null。
3. 提供一个公共的静态方法来获取类的实例。在方法中,判断静态变量是否为 null,如果为 null,则创建一个新的实例并赋值给静态变量。如果不为 null,则直接返回静态变量。
以下是懒汉式单例模式的 Java 代码示例:
```
public class Singleton {
// 静态变量,用于保存唯一实例
private static Singleton instance = null;
// 私有构造函数
private Singleton() {
}
// 公共静态方法,用于获取唯一实例
public static Singleton getInstance() {
// 如果实例为 null,则创建新实例
if (instance == null) {
instance = new Singleton();
}
// 返回实例
return instance;
}
}
```
这种实现方式是懒加载的,即只有在需要时才会创建实例。但是它存在线程安全问题,如果多个线程同时调用 getInstance() 方法,有可能会创建多个实例。可以通过加锁或使用双重检查锁来解决这个问题。
阅读全文