美文网首页
Synchronized关键字

Synchronized关键字

作者: 游牧族人 | 来源:发表于2018-09-02 20:40 被阅读15次
    • 修饰普通方法,锁当前实例对象
    • 修饰静态同步方法,锁当前类对象
    • 修饰同步代码块,锁括号中配置对对象
    • synchronized 属于jvm锁,虚拟机会自动释放该锁。
    synchronized 的实现原理

    JVM基于进入和退出 monitor 对象来实现方法同步和代码块同步,其中进出 monitor 对象使用 monitorenter 指定和 monitorexit 指令实现。
    monitorenter 是在编译后插入到同步代码块的位置,monitorexit 是在编译后插入到同步代码块结束或者异常发生的位置。每一个 monitorenter 都会与一个 monitorexit 对应,当一个 monitor 对象被持有后,他便处于锁定状态,不能再被其他线程持有。

    synchronized 可以保证操作的原子性和可见性
    原子性:synchronized 代码块中的语句要么全部执行要么全不执行。
    可见性:当线程离开同步代码块的时候会将线程本地内存同步回主内存。

    synchronized 属于重量级锁

    相关文章

      网友评论

          本文标题:Synchronized关键字

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