码迷,mamicode.com
首页 > 其他好文 > 详细

深入分析synchronized的实现原理

时间:2018-02-19 20:00:24      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:rgs   需要   一段   []   com   class   str   color   nbsp   

基础概念

  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的实现原理

标签:rgs   需要   一段   []   com   class   str   color   nbsp   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!