zoukankan      html  css  js  c++  java
  • java synchronized 关键字原理

    Synchronized 关键字是解决并发问题常用解决方案,有以下三种使用方式:

    同步普通方法,锁的是当前对象。
    同步静态方法,锁的是当前 Class 对象。
    同步块,锁的是 {} 中的对象。


    实现原理: JVM 是通过进入、退出对象监视器( Monitor )来实现对方法、同步块的同步的。

    具体实现是在编译之后在同步方法调用前加入一个 monitor.enter 指令,在退出方法和异常处插入 monitor.exit 的指令。

    其本质就是对一个对象监视器( Monitor )进行获取,而这个获取过程具有排他性从而达到了同一时刻只能一个线程访问的目的。

    而对于没有获取到锁的线程将会阻塞到方法入口处,直到获取锁的线程 monitor.exit 之后才能尝试继续获取锁。

    synchronized很多都称之为重量锁, JDK1.6 中对 Synchronized 进行了各种优化,为了能减少获取和释放锁带来的消耗引入了 偏向锁轻量锁

  • 相关阅读:
    opencv实现录屏
    numpy.where() 用法详解
    spring 配置quartz定时任务及时间设置
    http网络请求 返回不同的状态码
    28行代码带你理解机器学习原理
    sigmoid函数
    numpy运算简介(二)
    数论代码整理
    数论整理
    树状数组
  • 原文地址:https://www.cnblogs.com/AlexQY/p/9241883.html
Copyright © 2011-2022 走看看