lock obj的问题,求助!!!
想请问下,如果一个对象obj被锁了,那么其他线程是不是可以使用这个对象呢?我在网上找到的有些贴子说一个对象被锁了后,就不能使用了,但我自己测试了一下,是可以用的呀,如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Runtime.Remoting.Messaging;
namespace CLR_Thread
{
public class LockClass
{
public int i;
public LockClass(int n)
{
i = n;
}
}
class Program
{
private static readonly LockClass lockobj = new LockClass(3);
static void Main(string[] args)
{
Thread lockThd = new Thread(LockMethod);
lockThd.Start();
Thread.Sleep(2000);//让lockThd线程第一个执行,先lock lockobj
Thread useThd = new Thread(UseLockObj);//这个线程在lockobj锁定后,测试lockobj能否使用
useThd.Start();
}
static void UseLockObj()
{
Console.WriteLine(lockobj.i);
}
static void LockMethod()
{
lock (lockobj)
{
Console.WriteLine("lockobj is locked");
Thread.Sleep(10000);
}
}
}
}
{
//不被同时执行的代码
}