头疼程序员 2022-04-27 11:06 采纳率: 90%
浏览 27
已结题

偏向锁的问题疑惑??

第一个问题
偏向锁是不是始终针对一个线程,也就是说当第一个线程执行完了,过了5s又来了一个线程,,执行完,过了5s又来了一个线程..虽然没有线程竞争,但这把锁是不是变成了轻量级锁,已经不是偏向锁了?
第二个问题
当出现两个线程同时争取一把锁,是不是变成了轻量级锁变成重量级锁

  • 写回答

2条回答 默认 最新

  • 拾光师 2022-04-27 11:16
    关注

    问题一:
    对于同一个线程多次获得锁,使用偏向锁,也就是说没有发生线程争抢,一个线程在访问加了synchronized修饰的代码块时,会在对象头中存储当前线程的id,之后该线程进入和退出时,不需要再次加锁和释放锁,而是直接比较对象头里是否存储了指向当前线程ID的偏向锁
    多个线程在不同时段获取同一把锁,就会变成轻量级锁,当锁是偏向锁的时候,被另外的线程所访问,偏向锁就会升级为轻量级锁
    问题二:
    两个线程竞争锁时,另一个线程会通过自旋的形式尝试获取锁,当自旋超过一定的次数,或者一个线程在持有锁,一个在自旋,又有第三个来访时,轻量级锁升级为重量级锁

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月5日
  • 已采纳回答 4月27日
  • 创建了问题 4月27日

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法