日期:2014-05-17 浏览次数:20579 次
public void Test(int i)
{
lock (this)
{
if (i > 10)
{
i--;
Test(i);
}
}
}
public void Test(int i)
{
Console.WriteLine("TestLockBegin");
lock (this)
{
if (i > 10)
{
i--;
Test(i);
}
}
Console.WriteLine("TestLockEnd");
}
//然后再调用
Test(13);
var obj = new TA();
var input=50;
for(var i=0; i<10; i++)
{
ThreadPool.QueueUserWorkItem(h => { obj.Test(input); });
}
------解决方案--------------------
由于出题者过于草率,我们就可以把它往无厘头的方向去想:
var obj = new TA();
var input = 50;
ThreadPool.QueueUserWorkItem(h =>
{
lock (obj)
while (true) { };
});
for (var i = 0; i < 4; i++)
ThreadPool.QueueUserWorkItem(h => { obj.Test(input); });