请写一个懒汉式和饿汉式的单例程序
时间: 2023-09-30 11:01:50 浏览: 46
单例模式是一种常见的设计模式,其核心思想是保证一个类仅有一个实例,并且提供一个全局访问点。懒汉式和饿汉式是两种常见的单例实现方式。
懒汉式单例模式:
```java
public class LazySingleton {
private static LazySingleton instance;
private LazySingleton() {
// 私有构造方法,避免外部new实例
}
public static synchronized LazySingleton getInstance() {
if (instance == null) {
instance = new LazySingleton();
}
return instance;
}
}
```
在懒汉式单例模式中,实例对象只有在第一次使用时才会被创建。这种实现方式的缺点是在多线程环境下,可能会创建多个实例,因此需要使用`synchronized`关键字保证线程安全。
饿汉式单例模式:
```java
public class EagerSingleton {
private static final EagerSingleton instance = new EagerSingleton();
private EagerSingleton() {
// 私有构造方法,避免外部new实例
}
public static EagerSingleton getInstance() {
return instance;
}
}
```
在饿汉式单例模式中,实例对象在类加载时就会被创建,因此不存在线程安全问题。但这种实现方式的缺点是,即使实例没有被使用,也会被创建,可能会浪费一些内存空间。
需要根据具体情况选择懒汉式或饿汉式单例模式的实现方式。