pigeonsoar
pigeonsoar
> Thank you for your advise! > How did you find this problem? I wrote a small tool to check it. Thank you for your response.
> > I wrote a small tool to check it. > > That's interesting. If it's open source, please let me know! > > I'll fix the problem. I'm Sorry....
And it has the same problem in line 1356.
轻量级锁只要有竞争后就膨胀为重量级锁了嘛?好像没有先自旋一定次数失败再膨胀的逻辑,反而是膨胀后再自旋尝试。如果是这样的话,那么假如线程A获取了偏向锁,线程B再访问,然后偏向锁膨胀为轻量级锁,那线程B还是会继续尝试锁,那不就又直接膨胀为重量级锁了嘛,此时的轻量级锁的意义不就没了- -
水平不够 看源码实在是受不住啊 全靠注释看下来了 有个小问题 在锁升级的时候: > 将偏向线程所有相关Lock Record的Displaced Mark Word设置为null,然后将最高位的Lock Record的Displaced Mark Word 设置为无锁状态,最高位的Lock Record也就是第一次获得锁时的Lock Record(这里的第一次是指重入获取锁时的第一次) 偏向锁重入也会插入一次Lock Record嘛?那为什么上面偏向锁重入那里的注释是什么也没做呢? 然后是括号里的内容 为什么是一次重入获取的锁 第一次偏向的时候不就分配了一个Lock Record嘛 为什么用的是重入加的Lock Record呢?