调整格式

pull/26/head
AmyliaY 5 years ago
parent 1706939fb7
commit efe599cdf9

@ -7,7 +7,7 @@
确保某个类只有一个实例,并提供该实例的获取方法。
#### 实现方式
使用一个私有构造函数、一个私有静态变量以及一个公共静态方法来实现。懒汉式、饿汉式等简单实现就不多BB咯这里强调一下双检锁懒汉式实现的坑以及枚举方式的实现吧最后再结合spring源码 扩展一下单例bean的实现原理。
最简单的就是 使用一个私有构造函数、一个私有静态变量,以及一个公共静态方法的方式来实现。懒汉式、饿汉式等简单实现就不多BB咯这里强调一下双检锁懒汉式实现的坑以及枚举方式的实现吧最后再结合spring源码 扩展一下单例bean的实现原理。
**1. 双检锁实现的坑**
```java
@ -26,7 +26,7 @@ public class Singleton3 {
* 3、将instance指向分配的内存地址。
* 但JVM具有指令重排的特性实际的执行顺序可能会是1、3、2导致多线程情况下出问题
* 使用volatile修饰instance变量 可以 避免上述的指令重排
* tips不太理解的是 第一个线程在执行第2步之前就已经释放了锁导致其它线程进入synchronized代码块
* tips不太理解的是 第一个线程在执行第2步之前就已经释放了锁导致其它线程进入synchronized代码块
* 执行 instance == null 的判断?
*/
private volatile static Singleton3 instance;

Loading…
Cancel
Save