Java锁
文章平均质量分 77
Tang.Mr
当出发不为结果,所有出发,介是际遇
展开
-
Synchronized锁升级之重量级锁
线程之间存在实际的锁竞争行为,线程间都有获取锁的需求,但是时间不可交错,互斥锁的等待大白话就是:在同一时刻存在两个即两个以上线程对同一把锁产生竞争行为。原创 2023-03-30 23:19:03 · 236 阅读 · 1 评论 -
Synchronized锁升级之轻量级锁
线程之间存在锁的伪竞争行为,即同一时刻绝对不会存在两个线程申请获取锁,各个线程尽管都有使用锁的需求,但是是交替使用锁(轻量级锁情况下,线程还是不会发生堵塞)原创 2023-03-30 23:20:57 · 563 阅读 · 0 评论 -
Synchronized锁升级之无锁和偏向锁
为了优化synchronized锁的效率,在JDK1.6中,HotsPot虚拟机开发团队提出了锁升级的概念,包括偏向锁、轻量级锁、重量级锁,锁的升级值的是 无锁态 >> 偏向锁 >> 轻量级锁 >> 重量级锁synchronized同步锁相关信息保存在锁对象的对象同中的Mark Word中,锁升级功能主要是依赖Mark Word中锁的标准为何是否偏向锁来实现的从上图我们可以看到,无锁态对应的锁标志位位 01,是否偏向锁标志位 0,下面通过两个简单的Java case来演示无锁态和轻量级锁。原创 2023-03-30 23:18:19 · 332 阅读 · 0 评论 -
synchronized的工作原理
synchronized修饰代码块是,通过在生成的字节码指令中插入monitorenter和monitorexit指令来完成对 对象监视器的获取和释放synchronized修饰普通方法和静态方法的时候,通过在字节码中的方法头信息中添加ACC_SYNCHRONIZED标识,线程在执行方法前会先获取对象的 对象监视器(monitor)如果获取成功则执行方法代码,执行完毕后释放 monitor对象synchronized的使用修饰代码块,锁对象就是代码块中的对象。原创 2023-03-30 23:20:12 · 410 阅读 · 0 评论 -
Synchronized锁升级 - 锁的基本概念及优缺点
synchronized在JDK1.6的时候做了比较大的改动,在之后的JDK版本中,synchronized存在偏向锁、轻量级锁、重量级锁三种状态。原创 2023-03-30 23:16:58 · 154 阅读 · 0 评论