根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}答案是不会,那又是为什么呢,请说明
要是换成Object类型,就会发生死锁,请问都是为什么
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}答案是不会,那又是为什么呢,请说明
要是换成Object类型,就会发生死锁,请问都是为什么
我感觉怎么换都不会有问题
同时锁定方法拥有的资源,这时 Object i 被锁定,由于i是引用类型,所以递归中的i都是同一个Object对象
而i是被锁定的.....于是发生死锁!明白了没?