Skip to content
阅读进度

如何理解优先级反转与锁依赖? ​

返回 性能与稳定性 目录

标准回答 ​

高优先级线程等待低优先级线程持有的资源,而中等优先级工作使低优先级持锁者迟迟不能运行,就可能形成优先级反转,结果是关键线程受间接延迟。

在Trace里看关键线程等待哪把锁或哪项资源,找到持有者,再看持有者是否长期Runnable、被谁抢占,以及锁内实际做什么。仅把等待线程调高优先级通常无助于释放锁。

解决方向是缩短临界区、避免锁内阻塞I/O或IPC、减少共享状态或采用适合的同步机制。优先级继承是否生效依赖具体锁和内核路径,不能保证每个Java synchronized或任意等待都自动继承。

追问与回答 ​

锁只持有3ms,为什么主线程等了100ms ​

3ms可能只指持锁者实际运行时间,墙钟持有期间它还可能被抢占或等待其他资源。应测持有的经过时间。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。