Skip to content

Commit d127e5b

Browse files
committed
线程三大核心 更新
1 parent 78ab3b0 commit d127e5b

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

MD/Threadcore.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# Java 多线程三大核心
22

3-
![](https://ws2.sinaimg.cn/large/006tKfTcly1fmouu3fpokj31ae0osjt1.jpg)
4-
53
## 原子性
64
Java 的原子性就和数据库事物的原子性差不多,一个操作中要么全部执行成功或者失败。
75

@@ -50,6 +48,8 @@ public final boolean compareAndSet(long expect, long update) {
5048

5149
现代计算机中,由于 `CPU` 直接从主内存中读取数据的效率不高,所以都会对应的 CPU 高速缓存,先将主内存中的数据读取到缓存中,线程修改数据之后首先更新到缓存,之后才会更新到主内存。如果此时还没有将数据更新到主内存其他的线程此时来读取就是修改之前的数据。
5250

51+
![](https://ws2.sinaimg.cn/large/006tKfTcly1fmouu3fpokj31ae0osjt1.jpg)
52+
5353
如上图所示。
5454

5555
`volatile` 关键字就是用于保证内存可见性,当线程A更新了 volatile 修饰的变量时,它会立即刷新到主线程,并且将其余缓存中该变量的值清空,导致其余线程只能去主内存读取最新值。

0 commit comments

Comments
 (0)