Merge pull request #8 from HuaHero/HuaHero-patch-6

Update Java 并发.md
This commit is contained in:
HuaHero 2023-11-06 15:34:10 +08:00 committed by GitHub
commit 1cde34c9c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -334,6 +334,7 @@ future.cancel(true);
Java 提供了两种锁机制来控制多个线程对共享资源的互斥访问,第一个是 JVM 实现的 synchronized而另一个是 JDK 实现的 ReentrantLock。
### synchronized
**1. 同步一个代码块**
@ -489,6 +490,15 @@ public static void main(String[] args) {
### 比较
| **比较点** | **synchronized** | **ReentrantLock** |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ---------------------------------------------- |
| **锁的实现** | JVM实现 | JDK实现 |
| **性能** | 新版本Java已优化很多例如自旋锁等性能与ReentrantLock大致相同 | 与ReentrantLock大致相同 |
| **等待是否可中断**(当持有锁的线程长期不释放锁的时候,正在等待的线程可以选择放弃等待,改为处理其他事情。) | 不可中断 | 可中断 |
| **公平锁**(指多个线程在等待同一个锁时,必须按照申请锁的时间顺序来依次获得锁) | 非公平 | 默认非公平,但也可以是公平的 |
| **锁绑定多个条件** | | 一个ReentrantLock可以同时绑定多个Condition对象 |
**1. 锁的实现**