DoctorDeng
Results
2
comments of
DoctorDeng
> 搁浅现象是啥,谁能科普一下 搁浅(stranding)现象: monitor 已解锁,但所有争用线程仍处于休眠状态。此时如果没有新的线程来获取锁,已解锁的 monitor 永远无法被正在休眠的线程获取。为了避免这种问题,会选择一个线程作为负责线程(responsible thread),该线程通过调用 time park() 方法,让自己休眠固定时间后被唤醒,随后该线程会检查潜在搁浅问题并从中恢复
> 。若当前是轻量级锁。创建ObjectMonitor对象后,为什么可以简单地将其_recursions设置为0?如果是锁膨胀时 轻量级锁升级为重量级锁,初始状态当然得为 0,因为没有发生重入。膨胀过程中,持有锁的线程重入时,会检测到锁在膨胀过程,不能走原有的轻量级锁重入加锁逻辑,会和其他线程一样其他线程一样进行等待(以自旋方式等待),直到膨胀完成,膨胀完成后,持有锁的线程走的就是正常的重量级锁重入逻辑了。