黑马程序员技术交流社区

标题: lock问题 [打印本页]

作者: 不明觉厉    时间: 2013-11-29 13:02
标题: lock问题
本帖最后由 不明觉厉 于 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#高级变成看到这两种表示方法,请问有什么不同吗?还是这两种方法其实一样
作者: 许庭洲    时间: 2013-11-29 19:51
1. lock 关键字的参数必须为基于引用类型的对象,该对象用来定义锁的范围;
2. 如果确实存在此类引用,锁的范围将扩展到该对象;
3. 如果一个容器对象将被多个线程使用,则可以将该容器传递给 lock,而 lock 后面的同步代码块将访问该容器;
4.只要其他线程在访问该容器前先锁定该容器,则对该对象的访问将是安全同步的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2