锁的释放唤起其他线程
来源:9-3 synchronized底层实现原理-2

慕粉1890165
2023-12-19
锁的释放:
- A线程通过CAS操作尝试将线程中的displaced markword替换为当前锁对象的markword。
- 如果直接复制成功,说明没有其他线程竞争锁对象资源,对共享变量修改。
- 如果复制失败,说明锁的标志位已经变了,说明有其他线程在竞争锁,锁升级了,就要在释放锁的时候,唤起其他线程。
唤起其他线程是notify吗?notify唤醒的是等待池中的线程,并不是锁池中的线程。
您说的唤醒是什么操作呢?
写回答
1回答
-
翔仔
2023-12-20
执行同步代码块,没有竞争到锁的对象会park()被挂起,竞争到锁的线程会unpark()唤醒。这个时候就会存在操作系统用户态和内核态的转换,这种切换会消耗大量的系统资源
00
相似问题