mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-07-28 12:22:17 +08:00
Compare commits
4 Commits
45660b1f11
...
ba1034e2d2
Author | SHA1 | Date | |
---|---|---|---|
|
ba1034e2d2 | ||
|
87ad2cdca7 | ||
|
d9f0683677 | ||
|
bf04a1159e |
@ -189,7 +189,7 @@ final boolean nonfairTryAcquire(int acquires) {
|
|||||||
|
|
||||||
**2)Share**(共享)
|
**2)Share**(共享)
|
||||||
|
|
||||||
多个线程可同时执行,如 `Semaphore/CountDownLatch`。`Semaphore`、`CountDownLatCh`、 `CyclicBarrier`、`ReadWriteLock` 我们都会在后面讲到。
|
多个线程可同时执行,如 `Semaphore/CountDownLatch`。`Semaphore`、`CountDownLatch`、 `CyclicBarrier`、`ReadWriteLock` 我们都会在后面讲到。
|
||||||
|
|
||||||
`ReentrantReadWriteLock` 可以看成是组合式,因为 `ReentrantReadWriteLock` 也就是读写锁允许多个线程同时对某一资源进行读。
|
`ReentrantReadWriteLock` 可以看成是组合式,因为 `ReentrantReadWriteLock` 也就是读写锁允许多个线程同时对某一资源进行读。
|
||||||
|
|
||||||
|
@ -212,9 +212,9 @@ Thread[线程 2,5,main]waiting get resource1
|
|||||||
学过操作系统的朋友都知道产生死锁必须具备以下四个条件:
|
学过操作系统的朋友都知道产生死锁必须具备以下四个条件:
|
||||||
|
|
||||||
1. 互斥条件:该资源任意一个时刻只由一个线程占用。
|
1. 互斥条件:该资源任意一个时刻只由一个线程占用。
|
||||||
2. 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
|
2. 请求与保持条件:一个线程因请求资源而阻塞时,对已获得的资源保持不放。
|
||||||
3. 不剥夺条件:线程已获得的资源在未使用完之前不能被其他线程强行剥夺,只有自己使用完毕后才释放资源。
|
3. 不剥夺条件:线程已获得的资源在未使用完之前不能被其他线程强行剥夺,只有自己使用完毕后才释放资源。
|
||||||
4. 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
|
4. 循环等待条件:若干线程之间形成一种头尾相接的循环等待资源关系。
|
||||||
|
|
||||||
### 如何预防和避免线程死锁?
|
### 如何预防和避免线程死锁?
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user