java 8种单例模式
时间: 2023-11-24 15:18:54 浏览: 36
1. 饿汉式单例模式(Eager Initialization)
2. 懒汉式单例模式(Lazy Initialization)
3. 双重检查锁单例模式(Double Checked Locking)
4. 静态内部类单例模式(Static Inner Class)
5. 枚举单例模式(Enum)
6. 注册式单例模式(Registry)
7. ThreadLocal单例模式
8. 容器单例模式(Container)
相关问题
java编写三种单例模式
在 Java 中,单例模式可以通过以下三种方式来实现:
1. 懒汉式单例模式(线程不安全):
```
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if(instance == null) {
instance = new Singleton();
}
return instance;
}
}
```
该方法的缺点是在多线程环境下,可能会出现多个实例的情况。
2. 懒汉式单例模式(线程安全):
```
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static synchronized Singleton getInstance() {
if(instance == null) {
instance = new Singleton();
}
return instance;
}
}
```
该方法通过 synchronized 关键字保证了线程安全,但是在高并发的情况下性能较低。
3. 饿汉式单例模式:
```
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
```
该方法在类加载时就创建了实例,因此在多线程情况下也可以保证只有一个实例。但是如果实例的创建需要大量的时间,会导致程序启动较慢。
默写两种单例模式 java
在Java中,单例模式是一种常用的软件设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。以下是两种常见的单例模式实现:
1. **懒汉式单例模式**(也称为线程不安全的单例模式):
这种实现只有在首次访问时才会创建实例,如果多个线程同时访问,可能会导致多个实例被创建。为了保证线程安全,通常会使用 `synchronized` 关键字或双重检查锁定(Double-Checked Locking)。
```java
public class Singleton {
private volatile static Singleton instance;
// 防止类加载时就初始化
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) { // 第二重检查锁定
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
```
2. **饿汉式单例模式**(线程安全的单例模式):
这种实现是在类加载时就创建了单例实例,所以对多线程环境来说是安全的,不需要额外的同步措施。
```java
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
```