美文网首页
sychronized原理

sychronized原理

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

相关文章

  • sychronized原理

    偏向锁适合在只有一个线程执行同步代码时,提升性能线程进入同步代码块是,会通过CAS(compare and swa...

  • Sychronized的原理

    synchronized是jdk原生提供的锁,底层由偏向锁、轻量级和重量级锁来回切换实现。偏向锁并不算锁,它在对象...

  • Sychronized底层实现原理

    1.创建对象在堆内存中,分为三个部分: 对象头: 标记:存储对象的hashcode、锁信息、分代年龄和GC标志等信...

  • sychronized-基本原理介绍以及锁升级过程详解

    sychronized的实现原理与应用 在多线程并发编程中synchronized一直是元老的角色,很多人都会称呼...

  • Java Concurrent synchronized 使用&

    sychronized 用法 sychronized 是Java语法层面的同步策略,可以用来修饰instance变...

  • ReentrantLock原理剖析

    引言 提起java的线程同步,大家总能想到sychronized关键字。sychronized是由JVM提供的重量...

  • Sychronized & Volatile

    Synchronized 保证了可见性 ,并且保证了原子性Volatile只保证了可见性,不能保证原子性,即只能保...

  • Sychronized in Java

    使用多线程,避免不了要考虑线程安全的问题,常见解决线程安全的方式:是采用“序列化访问临界资源”的方案。即在同一时刻...

  • 多线程安全-sychronized

    layout: posttitle: "多线程安全-sychronized"categories: [编程]tag...

  • Sychronized关键字使用及原理解析

    Sychronized关键字使用场景 三种方法 修饰实例方法作用于当前对象实例加锁,进入同步代码前要获得当前对象实...

网友评论

      本文标题:sychronized原理

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