Skip to content

Commit

Permalink
Merge pull request CyC2018#763 from MalikCheng/pr
Browse files Browse the repository at this point in the history
调整段落位置
  • Loading branch information
CyC2018 authored Aug 11, 2019
2 parents d2a04c4 60a1d0b commit eea5a4d
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions notes/Java 并发.md
Original file line number Diff line number Diff line change
Expand Up @@ -1329,10 1329,10 @@ synchronized 和 ReentrantLock。

互斥同步属于一种悲观的并发策略总是认为只要不去做正确的同步措施那就肯定会出现问题无论共享数据是否真的会出现竞争它都要进行加锁这里讨论的是概念模型实际上虚拟机会优化掉很大一部分不必要的加锁)、用户态核心态转换维护锁计数器和检查是否有被阻塞的线程需要唤醒等操作

### 1. CAS

随着硬件指令集的发展我们可以使用基于冲突检测的乐观并发策略先进行操作如果没有其它线程争用共享数据那操作就成功了否则采取补偿措施不断地重试直到成功为止)。这种乐观的并发策略的许多实现都不需要将线程阻塞因此这种同步操作称为非阻塞同步

### 1. CAS

乐观锁需要操作和冲突检测这两个步骤具备原子性这里就不能再使用互斥同步来保证了只能靠硬件来完成硬件支持的原子性操作最典型的是比较并交换Compare-and-SwapCAS)。CAS 指令需要有 3 个操作数分别是内存地址 V旧的预期值 A 和新值 B当执行操作时只有当 V 的值等于 A才将 V 的值更新为 B

### 2. AtomicInteger
Expand Down

0 comments on commit eea5a4d

Please sign in to comment.