1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-08-01 16:28:03 +08:00

Update java-concurrent-questions-02.md

修改描述语病
This commit is contained in:
suppered 2024-09-18 16:26:09 +08:00 committed by GitHub
parent 7cf404ba59
commit 534fde27f7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -549,7 +549,7 @@ public class SynchronizedDemo2 {
![synchronized关键字原理](https://oss.javaguide.cn/github/javaguide/synchronized%E5%85%B3%E9%94%AE%E5%AD%97%E5%8E%9F%E7%90%862.png)
`synchronized` 修饰的方法并没有 `monitorenter` 指令和 `monitorexit` 指令,取得代之的确实`ACC_SYNCHRONIZED` 标识该标识指明了该方法是一个同步方法。JVM 通过该 `ACC_SYNCHRONIZED` 访问标志来辨别一个方法是否声明为同步方法,从而执行相应的同步调用。
`synchronized` 修饰的方法并没有 `monitorenter` 指令和 `monitorexit` 指令,取而代之的`ACC_SYNCHRONIZED` 标识该标识指明了该方法是一个同步方法。JVM 通过该 `ACC_SYNCHRONIZED` 访问标志来辨别一个方法是否声明为同步方法,从而执行相应的同步调用。
如果是实例方法JVM 会尝试获取实例对象的锁。如果是静态方法JVM 会尝试获取当前 class 的锁。
@ -557,7 +557,7 @@ public class SynchronizedDemo2 {
`synchronized` 同步语句块的实现使用的是 `monitorenter``monitorexit` 指令,其中 `monitorenter` 指令指向同步代码块的开始位置,`monitorexit` 指令则指明同步代码块的结束位置。
`synchronized` 修饰的方法并没有 `monitorenter` 指令和 `monitorexit` 指令,取得代之的确实`ACC_SYNCHRONIZED` 标识,该标识指明了该方法是一个同步方法。
`synchronized` 修饰的方法并没有 `monitorenter` 指令和 `monitorexit` 指令,取而代之的`ACC_SYNCHRONIZED` 标识,该标识指明了该方法是一个同步方法。
**不过两者的本质都是对对象监视器 monitor 的获取。**