美文网首页
java 的锁和监视器

java 的锁和监视器

作者: lionel880 | 来源:发表于2021-01-26 14:13 被阅读0次

java 的锁是什么?

java 是基于对象的,每个对象都有一个mark word区域,即对象头区域,里面会有一个锁的字段,其实很简单,就是锁的模式是什么:偏向锁,轻量锁,重量锁,还有锁指向的指针
当一个线程,将锁的指针通过CAS指向自己的栈帧,就说明获得了锁

监视器是什么?

监视器只是实现同步的一种模式,他是依靠锁实现的
当java使用synchronize关键词时,转化到monitorenter和monitorexit这两个字节码指令,就是进入监视器和退出监视器,这其实只是一种模式,进入监视器的时候,就需要一个对象的引入,加锁首先要尝试获取对象的锁,获得就计数器加1,退出监视器则-1,就这么简单的实现了同步

不同等级锁的区别

首先最早的锁,就是阻塞block状态,被唤醒的时候涉及到用户态到核心态的转化,多线程时效率低,但后续优化后,目前synchronize效率已经和ReentrantLock差不多了

  • 优化措施有:
    自旋锁,锁消除,锁粗大
    这三者都是jvm内部优化
    1.自旋锁,因为阻塞的模式,会涉及用户态和核心态的转换,效率低,大部分情况下不需要阻塞那么久,所以会用自旋锁的方式,当线程拿不到锁时,会先尝试一定次数的自旋,如10次,如果还是拿不到锁,则会进入阻塞模式

2.锁消除
某些情况下,分析出不需要锁,内部会把锁消除

3.锁粗大
加锁一般是越精细越好,但这样会可能在一个类中不同方法 ,频繁获得锁和释放锁,某些情况下会被内部优化成对类或者对象进行加锁

  • 不同的所类型有:
    偏向锁,轻量锁,重量锁
    不同的锁等级只是适用于不同的竞争环境,如果一般不怎么有竞争,则越轻越好,如果竞争概率很大,则直接最重的就好,这也是jvm的内部优化
    总的来说,就是先偏向锁,有其他线程加锁,就变成轻量锁,轻量锁模式下,如果还有人来竞争,则变成重量锁。重量锁就是最普通的阻塞的方式

1.偏向锁
偏向锁是最轻的,也是最初时的尝试,当第一个线程通过CAS获得锁之后,以后这个线程再次获得这个锁,会直接去拿,不进行同步操作。直到另一个线程也来所得锁,就会修改偏向锁模式改为轻量锁

2.轻量锁
轻量锁仍然是为基本没有竞争的情况设计的,相比于偏向锁,他在每次获得锁时,都要通过CAS方式,去设置对象的mark word 锁只想当前栈帧,不会跳过这个同步操作。如果有两条以上的线程争用同一个锁,那轻量级锁就不再有效,要膨胀为重量级锁

相关文章

  • 2019大厂面试存疑

    Java相关 Java实现的锁有哪些synchornized实现的监视器锁、ReentrantLock、ReadW...

  • synchronized原理

    synchronized是一种内置锁/监视器锁Java中每个对象都有一个内置锁(监视器,也可以理解成锁标记),而s...

  • java 的锁和监视器

    java 的锁是什么? java 是基于对象的,每个对象都有一个mark word区域,即对象头区域,里面会有一个...

  • synchronized

    1. 概述 在Java早期版本,synchronized属于重量级锁,效率低下,因为使用监视器锁(monitor)...

  • Java并发编程之显式锁

    1.前言 使用Java内置锁的时候,不需要通过Java代码显式地对同步对象的监视器(Monitor)进行抢占和释放...

  • Multi-Th:线程安全的一些基本概念

    线程安全基本概念 内置锁 每个Java对象都可以用作一个同步锁,这些锁被称为内置锁 或 监视器锁。线程在进入同步代...

  • 12. 内部锁:synchronized关键字

    Java平台中的任何一个对象都有唯一一个与之关联的锁。这种锁被称为监视器(Monitor)或内部锁(Intrins...

  • Java并发编程(1):可重入内置锁

    每个Java对象都可以用做一个实现同步的锁,这些锁被称为内置锁或监视器锁。线程在进入同步代码块之前会自动获取锁,并...

  • Java并发编程(1):可重入内置锁

    每个Java对象都可以用做一个实现同步的锁,这些锁被称为内置锁或监视器锁。线程在进入同步代码块之前会自动获取锁,并...

  • ReentrantLock和监视器锁的选择

    在Java多线程编程中,我们经常过加锁的机制来保证线程同步。以Synchronized关键字为实现方式的监视器锁和...

网友评论

      本文标题:java 的锁和监视器

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