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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不明觉厉 中级黑马   /  2013-11-29 13:02  /  1127 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 不明觉厉 于 2013-12-1 09:51 编辑

1:class A                                    
    {
      lock(this)
        {
          public void MethodA(){}
        }   
      lock(this)
        {
          public void MethodB(){}
        }   
     }
2:class A                                    
    {
        private object syn=new object();
         lock(syn)
         {
          public void MethodA(){}
         }
        lock(syn)
       {           
         public void MethodB(){}
       }
   }
在c#高级变成看到这两种表示方法,请问有什么不同吗?还是这两种方法其实一样

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

1 个回复

倒序浏览
1. lock 关键字的参数必须为基于引用类型的对象,该对象用来定义锁的范围;
2. 如果确实存在此类引用,锁的范围将扩展到该对象;
3. 如果一个容器对象将被多个线程使用,则可以将该容器传递给 lock,而 lock 后面的同步代码块将访问该容器;
4.只要其他线程在访问该容器前先锁定该容器,则对该对象的访问将是安全同步的。

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马