并发编程

This commit is contained in:
罗祥 2019-12-12 14:44:30 +08:00
parent a0115d0fff
commit a5946449ad

View File

@ -154,7 +154,6 @@ Java 线程的生命周期分为以下五类状态:
<div align="center"> <img src="../pictures/线程完整生命周期.jpg"/> </div> <div align="center"> <img src="../pictures/线程完整生命周期.jpg"/> </div>
### 1.4 线程终止 ### 1.4 线程终止
通常线程会随着代码的运行完成而终止,但如果你在线程中进行了循环操作,此时就需要考虑如何安全地停止线程?虽然 Thread 类提供了 `stop()` 方法,但是其已经被标识为废弃,因为 `stop()` 只是暴力的停止线程, 但此时线程中的操作仍可能处于中间状态,此时暴力地停止就可能会产生非预期的结果。想要安全的停止线程,可以通过改变终止标志位的方式来实现: 通常线程会随着代码的运行完成而终止,但如果你在线程中进行了循环操作,此时就需要考虑如何安全地停止线程?虽然 Thread 类提供了 `stop()` 方法,但是其已经被标识为废弃,因为 `stop()` 只是暴力的停止线程, 但此时线程中的操作仍可能处于中间状态,此时暴力地停止就可能会产生非预期的结果。想要安全的停止线程,可以通过改变终止标志位的方式来实现:
@ -326,7 +325,6 @@ public class J1_ThreadUnsafe {
<div align="center"> <img src="../pictures/cahce.png"/> </div> <div align="center"> <img src="../pictures/cahce.png"/> </div>
### 4.3 缓存一致性协议 ### 4.3 缓存一致性协议
在多线程环境下,每个线程运行在不同的处理器上,当多个线程并发访问同一个共享变量时,这些线程的执行处理器都会在自己的高速缓存中保留一个该共享变量的副本,这种情况下如何让一个处理器对数据的更改能被其他处理器感知到?为了解决这个问题,需要引入一种新的通讯机制,这就是缓存一致性协议。 在多线程环境下,每个线程运行在不同的处理器上,当多个线程并发访问同一个共享变量时,这些线程的执行处理器都会在自己的高速缓存中保留一个该共享变量的副本,这种情况下如何让一个处理器对数据的更改能被其他处理器感知到?为了解决这个问题,需要引入一种新的通讯机制,这就是缓存一致性协议。
@ -390,7 +388,6 @@ public class J1_ThreadUnsafe {
## 五、有序性 ## 五、有序性
### 5.1 顺序语义 ### 5.1 顺序语义
@ -1895,7 +1892,12 @@ public class J2_ThreadSafe {
## 参考资料
1. 黄文海 . Java多线程编程实战指南核心篇. 电子工业出版社 . 2017-04
2. 葛一鸣 . 实战Java高并发程序设计第2版. 电子工业出版社 . 2018-10
3. 周志明 . 深入理解Java虚拟机第2版. 机械工业出版社 . 2013-09-01
4. 汪文君 . Java高并发编程详解 . 机械工业出版社 . 2018-06