懒汉式代码跟饿汉式代码
时间: 2023-12-20 09:42:05 浏览: 33
当涉及到单例模式时,常见的两种实现方式是懒汉式和饿汉式。下面我将分别为您提供这两种方式的代码示例。
懒汉式:
```java
public class Singleton {
private static Singleton instance;
private Singleton() {
// 私有构造函数,防止外部实例化
}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
// 添加其他方法和属性
}
```
在懒汉式中,实例在第一次调用`getInstance()`方法时才被创建。`getInstance()`方法使用了`synchronized`关键字来保证在多线程环境下的线程安全。然而,懒汉式的这种加锁方式可能会影响性能,因为每次获取实例时都需要进行同步。
饿汉式:
```java
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton() {
// 私有构造函数,防止外部实例化
}
public static Singleton getInstance() {
return instance;
}
// 添加其他方法和属性
}
```
在饿汉式中,实例在类加载时就被创建,并且是静态常量。这种方式避免了线程安全问题,因为实例在类加载时就已经被创建了。但是,如果该实例在后续的程序执行中没有被使用到,那么这种方式可能会浪费内存空间。
这里提供的是两种常见的单例模式实现方式,您可以根据自己的需求选择适合的方式。