1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00

Merge pull request #2575 from Kisa-Dong/main

Update java-concurrent-questions-02.md
This commit is contained in:
Guide 2025-01-01 17:21:54 +08:00 committed by GitHub
commit 5533692b77
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -530,13 +530,13 @@ public class SynchronizedDemo {
![执行 monitorenter 获取锁](https://oss.javaguide.cn/github/javaguide/java/concurrent/synchronized-get-lock-code-block.png) ![执行 monitorenter 获取锁](https://oss.javaguide.cn/github/javaguide/java/concurrent/synchronized-get-lock-code-block.png)
对象锁的拥有者线程才可以执行 `monitorexit` 指令来释放锁。在执行 `monitorexit` 指令后,将锁计数器设为 0表明锁被释放其他线程可以尝试获取锁。 对象锁的拥有者线程才可以执行 `monitorexit` 指令来释放锁。在执行 `monitorexit` 指令后,将锁计数器设为 0表明锁被释放其他线程可以尝试获取锁。
![执行 monitorexit 释放锁](https://oss.javaguide.cn/github/javaguide/java/concurrent/synchronized-release-lock-block.png) ![执行 monitorexit 释放锁](https://oss.javaguide.cn/github/javaguide/java/concurrent/synchronized-release-lock-block.png)
如果获取对象锁失败,那当前线程就要阻塞等待,直到锁被另外一个线程释放为止。 如果获取对象锁失败,那当前线程就要阻塞等待,直到锁被另外一个线程释放为止。
#### synchronized 修饰方法的情况 #### synchronized 修饰方法的情况
```java ```java
public class SynchronizedDemo2 { public class SynchronizedDemo2 {