1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-07-28 12:22:17 +08:00

Compare commits

...

4 Commits

Author SHA1 Message Date
Guide
ba1034e2d2
Merge pull request #1650 from DayuZhu/patch-2
Update aqs.md
2022-03-29 20:32:11 +08:00
Guide
87ad2cdca7
Merge pull request #1645 from 18986293910/patch-1
死锁的四个必要条件
2022-03-29 20:07:55 +08:00
Dayu
d9f0683677
Update aqs.md
勘误:“ CountDownLatCh” 改为 “ CountDownLatch”
2022-03-29 17:06:28 +08:00
18986293910
bf04a1159e
死锁的四个必要条件
必要条件中有时是进程,有时又是线程,将其都改为线程。
2022-03-28 09:19:27 +08:00
2 changed files with 3 additions and 3 deletions

View File

@ -189,7 +189,7 @@ final boolean nonfairTryAcquire(int acquires) {
**2)Share**(共享)
多个线程可同时执行,如 `Semaphore/CountDownLatch``Semaphore``CountDownLatCh`、 `CyclicBarrier``ReadWriteLock` 我们都会在后面讲到。
多个线程可同时执行,如 `Semaphore/CountDownLatch``Semaphore``CountDownLatch`、 `CyclicBarrier``ReadWriteLock` 我们都会在后面讲到。
`ReentrantReadWriteLock` 可以看成是组合式,因为 `ReentrantReadWriteLock` 也就是读写锁允许多个线程同时对某一资源进行读。

View File

@ -212,9 +212,9 @@ Thread[线程 2,5,main]waiting get resource1
学过操作系统的朋友都知道产生死锁必须具备以下四个条件:
1. 互斥条件:该资源任意一个时刻只由一个线程占用。
2. 请求与保持条件:一个程因请求资源而阻塞时,对已获得的资源保持不放。
2. 请求与保持条件:一个线程因请求资源而阻塞时,对已获得的资源保持不放。
3. 不剥夺条件:线程已获得的资源在未使用完之前不能被其他线程强行剥夺,只有自己使用完毕后才释放资源。
4. 循环等待条件:若干程之间形成一种头尾相接的循环等待资源关系。
4. 循环等待条件:若干线程之间形成一种头尾相接的循环等待资源关系。
### 如何预防和避免线程死锁?