您的位置:首页 > 编程语言 > Java开发

synchronized关键字详解 --Java并发编程的艺术

2017-04-26 12:17 531 查看
    1.当synchronized修饰方法时候,锁定的是当前方法所在的对象

    2.当synchronized修饰static方法时是,锁定的是当前类的Class对象。

    3.当synchronized作用于同步代码块时,锁定的是synchronized(object) 括号里的对象

    Synchonized在JVM里的实现原理:

    JVM 基于进入和退出Monitor对象来实现方法同步和代码块同步。

    代码块同步:使用monitorenter和monitorexit指令实现

    方法同步:同样可以使用这两个指令实现

    每一个对象都有一个monitor。monitorenter与monitorexit是成对出现的。monitorenter指令是在编译后插入到同步代码块的开始位置。monitorexit插入到方法结束处或异常处。

    当线程执行到monitorenter指令时,将会尝试获取对象所对应的monitor的所有权,即尝试获得对象的锁。

                                        


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: