首页 > 其他 > 详细

深入分析synchronized的实现原理

时间:2018-02-19 19:56:23      阅读:253      评论:0      收藏:0      [点我收藏+]

基础概念

  synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时可以保证共享变量对内存可见性。

 

  Java中每一个对象都可以作为锁,这是synchronized实现同步的基础:

    1. 普通同步方法,锁是当前实例对象
    2. 静态同步方法,锁是当前类的class对象
    3. 同步方法块,锁是括号里面的对象

  当一个线程访问同步代码块时,它首先是需要得到锁才能执行同步代码,当退出或者抛出异常时必须要释放锁。

底层实现原理

如何来实现这个机制呢?我们先看如下一段简单代码:

public class SynchronizedTest{
    public synchronized void test1(){

    }
    public void test2(){
        synchronized(this){
        }
    }

    public static void main(String []args){
        
    }
}

利用javap工具查看生成的class 文件信息来分析synchronize的实现

技术分享图片

  从上图可以看出,同步

 

深入分析synchronized的实现原理

原文:https://www.cnblogs.com/ktao/p/8454274.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!