美文网首页
sychronized原理

sychronized原理

作者: 董江鹏 | 来源:发表于2021-03-03 20:21 被阅读0次
    1. 偏向锁
      适合在只有一个线程执行同步代码时,提升性能
      线程进入同步代码块是,会通过CAS(compare and swap)操作,设置对象头的锁标志位,如果标志位的线程id为空,则设置为当前线程id,成功获得锁;如果不为空,判断是否是当前线程,如果是,成功获得锁,如果不是,说明有其它线程访问过,则升级为轻量级锁。
    2. 轻量级锁
      适合在两个线程交替执行的时候,并发程度小,提升性能
      jvm在当前线程栈帧中设置锁记录,然后通过CAS操作把对象头的轻量级锁的指针指向锁记录,如果失败,先检查是否已获得锁,未获得,则会自旋,自旋多次后仍然失败,升级为重量级锁
    3. 重量级锁
      适合高并发的场景
      通过CAS操作将monitor的owner设置为当前线程,如果成功,获得锁,或者重入加1,否则未获得锁,线程会被挂起,在等待队列里等待被系统唤醒

    相关文章

      网友评论

          本文标题:sychronized原理

          本文链接:https://www.haomeiwen.com/subject/uzhxqltx.html