Skip to content

Commit e656f85

Browse files
committed
更新笔记
1 parent ecfc225 commit e656f85

12 files changed

Lines changed: 764 additions & 420 deletions

Java/Java基础.md

Lines changed: 262 additions & 234 deletions
Large diffs are not rendered by default.

Java/Java并发编程.md

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,28 +33,7 @@
3333

3434
在多线程程序使用共享且可变的64位数据类型的变量是不安全的。
3535

36-
<a id="volatile"></a>
37-
### volatile
38-
当一个变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。
3936

40-
volatile关键字的两层语义:
41-
42-
1. 保证了不同线程对共享变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。
43-
2. 禁止进行指令重排序。
44-
45-
volatile 变量常用语检查某个状态标记以判断是否退出循环。
46-
47-
```java
48-
volatile boolean asleep;
49-
...
50-
while(!asleep) {
51-
countSheep();
52-
}
53-
```
54-
55-
当 asleep 被另一个线程修改时,循环判断条件处会立刻知道 asleep 被修改。
56-
57-
volatile 变量不能保证原子性,只能确保可见性;加锁机制可以确保可见性和原子性。
5837

5938
<a id="this-引用逸出"></a>
6039
### this 引用逸出

Java/并发.md

Lines changed: 397 additions & 97 deletions
Large diffs are not rendered by default.

img/ConcurrentHashMap-segment.jpg

225 KB
Loading
12.6 KB
Loading

img/Java-Collections.jpeg

164 KB
Loading

img/aqs.png

21.3 KB
Loading

img/optimistic-lock.jpg

38.5 KB
Loading

img/thread-status.jpeg

86.6 KB
Loading

img/拥塞控制.jpg

47.5 KB
Loading

0 commit comments

Comments
 (0)