因为ThreadStart使用的是相同的delegate,所以Target==this
所以,所有线程的"this"是同一引用。lock的都是相同的。你的c是null?
而且每条线程的c都是不同的。
用
static public object LockShare=new object();然后
lock(LockShare)
{
}
那么结果和this一样。
所以,所有线程的"this"是同一引用。lock的都是相同的。你的c是null?
而且每条线程的c都是不同的。
用
static public object LockShare=new object();然后
lock(LockShare)
{
}
那么结果和this一样。
意思就是说如果 lock 一个 非 static 的引用的话,如lock (c),
等于和没有 lock 一样。lock 也就失去了作用。
Class1 c = new Class1();
lock ( c )
{
Thread.Sleep( 1000 );
Console.WriteLine("Current Thread:"+Thread.CurrentThread.Name);
}
照样会工作正常。
lock ( c )
{
Thread.Sleep( 1000 );
Console.WriteLine("Current Thread:"+Thread.CurrentThread.Name);
}照样线程们一样会一起执行
Thread.Sleep( 1000 );
Console.WriteLine("Current Thread:"+Thread.CurrentThread.Name);因为大家 lock的aa是不一样的。