关于Lock语句的简单问题:下面这几种有什么区别?
Lock(this)Lock(new object())
private object obj;
Lock(obj)
private object obj=new object();
Lock(obj)

解决方案 »

  1.   


    Lock(this)                  // 小心使用 (别人可以解开你上的锁)
    Lock(new object())      // 没有用
    private object obj
    Lock(obj)                  // 对象可能还没有初始化
    private object obj=new object()
    Lock(obj)                  // 比较好
      

  2.   

    Lock(this)  
    当"this"是公开的并有多个引用时,可能会有问题,因为有可能不受控制的代码也把这个对象锁了。
    比如多个线程等待释放它时,会造成死锁Lock(new object())  等于没锁private object obj; 
    Lock(obj)   没实例化?private object obj=new object(); 
    Lock(obj)   一般都用这种。
      

  3.   

    Lock(new object())  等于没锁 
    -------------------为什么这句等于没锁?
      

  4.   

    执行到这里,问一句:有没有东西锁了这个刚刚new的一个东西啊?
    所有“人”回答:当然没有啦,人家刚new出来,你是第一个访问它的。