这道题如何解释

来源:百度知道 编辑:UC知道 时间:2024/05/24 07:07:36
根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}
答案我有,只是看不懂,希望大家不要拷贝粘贴,谢谢!!!

public void test(int i)
{
lock(this) //锁定线程,必须要等这个线程中this的lock块执行完毕之后才能访问锁定的代码,这里面的代码都被锁定了,你在递归的时候lock仍然是保持锁定状态,子让到i>10的时候是不能条用里面的代码了,所以就造成死锁,楼主对lock还需要更多的了解
{
if (i>10)
{
i--;
test(i);
}
}
}