【干货+面经】河北王校长口撕系列 并发编程 第三弹。外卖小哥敲门,差点把我搞蒙-【干货+面经】河北王校长口撕系列 并发编程 第三弹。外卖小哥敲门,差点把我搞蒙

AID:
CID:
视频图片:
作者头像:
弹幕地址:
视频描述:

热门回复:

  • 后无忧:您好,看完视频后有些疑问可以帮忙解答一下么 1、视频中提到的epoch是做什么用的呢 2、17:44这里提到的安全点是否包括安全区域?还有线程b需要等待线程c执行到安全点,之后会针对该对象的markword部分进行操作,但是在多核并行环境下,其它几个线程也在进行这一步,JDK针对这种场景是怎么保证修改操作线程安全 3、20:02这个时间点提到第一种情况线程b会把mark word里的hashcode置为0和epoch,同时标志位置为00。那之后线程b是以怎样的状态去获取锁呢(是否是自旋CAS)?对于正在执行同步块的线程a,是怎么去释放当前持有锁的呢?和轻量级锁升级为重量级锁类似么,线程a在自己的栈帧中创建一个mard word(生成hashcode)对象然后替换到原来的对象头里吗? 4、在锁为偏向锁以及轻量级锁的时候,object.wait()方法和object.notify()方法是怎么实现的呢,以及锁的可重入和多次重入后的释放是怎么保证的呢? 5、在《深入理解Java虚拟机》书中提到如果有两个以上的线程竞争轻量级锁,在这个时候锁也会升级为重量级锁,这个说法正确吗? 6、如果锁最后升级为重量级锁,在所有线程执行完同步块之后。再来一个线程,这个时候hashcode不为0不会进行偏向,但这个时候锁是从轻量级开始,还是直接重量级? 7、第三种情况直接将该对象置为不可使用偏向锁,这个具体是置哪个标志位呢?是锁标志位前一位那个bit么,把它置为0表示不可偏向? 8、如果超过批量撤销阈值,new的对象锁标志位直接是00,这个时候后续的线程是怎么获取它的锁呢,这个问题和第三个问题有点像,但是第三个问题的前提是线程a持有锁,new出来之后并没有线程持有锁期待您的解答。说实话这个视频是我看过关于Java内置锁最深入的一个视频了,虽然我还有很多疑问,但是我也开拓的视野,真的感谢您的分享。
  • zjszjs007:有种在上课的感觉,然后就是听着自己就会犯困那种,我还是开了23倍速看的[doge]
  • 啊咧咧啊啦啦啊:支持!
  • AndyChenit:@河北王校长 校长,看源码轻量级锁是没有循环的,只有重量级锁有一个自适应循环操作。视频31分钟左右说轻量级锁有默认10次循环在源码哪里看到的?
  • 爱喝热水的路人甲:[笑哭][笑哭]校长技术功底真深厚[笑哭][笑哭][笑哭]