增加了单例的静态内部类实现方法

This commit is contained in:
xiangflight 2018-07-10 10:59:38 +08:00
parent 2d1e09a2bf
commit 0e97ccce3b
2 changed files with 23 additions and 1 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -151,7 +151,29 @@ uniqueInstance 采用 volatile 关键字修饰也是很有必要的。`uniqueIns
使用 volatile 可以禁止 JVM 的指令重排,保证在多线程环境下也能正常运行。
(五)枚举实现
(五)静态内部类实现
这种实现方式的原理:当静态类加载时,静态内部类没有加载进内存。只有当外部调用`getInstance()`方法,静态内部类才会被创建,此时会实例化一个单例的对象,之后每次
调用`getInstance()`都会获取相同的对象。此方法不需要同步。
```java
public class Singleton {
private Singleton() {
}
private static class SingletonHelper {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getUniqueInstance() {
return SingletonHelper.INSTANCE;
}
}
```
(六)枚举实现
这是单例模式的最佳实践,它实现简单,并且在面对复杂的序列化或者反射攻击的时候,能够防止实例化多次。