Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
scu-zzy committed Jul 8, 2020
1 parent e0731fa commit ecfc0d7
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
23 changes: 23 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,25 @@
# Java-note
Java学习笔记

### java相关 ###

- Java基础
- Java集合
- JVM
- Java并发
- 线程池
- Java IO

### 计算机基础 ###

- 数据库
- 计算机网络
- 操作系统

### 面向对象思想 ###

- 设计模式

### Java Web ###

todo
6 changes: 6 additions & 0 deletions 设计模式/创建型模式.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,12 @@ uniqueInstance 只需要被实例化一次,之后就可以直接使用了。
}
}

因此必须使用双重校验锁,也就是需要使用两个 if 语句:第一个 if 语句用来避免 uniqueInstance 已经被实例化之后的加锁操作,而第二个 if 语句进行了加锁,所以只能有一个线程进入,就不会出现 uniqueInstance == null 时两个线程同时进行实例化操作。

uniqueInstance 采用 volatile 关键字修饰也是很有必要的, uniqueInstance = new Singleton(); 这段代码其实是分为三步执行

使用 volatile 可以禁止 JVM 的指令重排,保证在多线程环境下也能正常运行。

### 饿汉式-线程安全

线程不安全问题主要是由于 uniqueInstance 被实例化多次,采取直接实例化 uniqueInstance 的方式就不会产生线程不安全问题。
Expand Down

0 comments on commit ecfc0d7

Please sign in to comment.