A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 724681149 黑马帝   /  2011-10-16 19:14  /  1783 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

坦言Synchronize的本质
        Synchronize大家都知道是同步、加锁的意思,其实它的本质远没有大家想得那么复杂。声明Synchronize的方法被调用的时候,锁其实是加载对象上,当然如果是静态类则是加在类上的锁,调用结束锁被解除。它的实现原理很简单,仅仅是不让第二把锁再次被加在同一个对象或类上,仅此而已。一个简单的例子足以说明问题:
        class  A{
                     synchronized  void  f(){}
                     void  g(){}
        }

        当A的一个对象a被第一个线程调用其f()方法的时候,第二个线程不能调用a的synchronized方法例如f(),因为那是在试图在对象上加第二把锁。但调用g()却是可以的,因为并没有在同一对象上加两把锁的行为产生。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马