黑马程序员技术交流社区
标题:
锁的问题。
[打印本页]
作者:
guobin_lu
时间:
2013-3-31 23:16
标题:
锁的问题。
public void Test(int i)
{
lock (this)
{
if (i > 10)
{
i--;
Test(i);
}
}
}
复制代码
这样会不会出现死锁
作者:
赵海洋
时间:
2013-3-31 23:24
代码只有这么一段?如果i是小于10的,不会执行if语句,如果i>10,会递归,但最后i会小于10,然后返回,这一段应该不会有死锁。
作者:
DWC_5101
时间:
2013-3-31 23:25
不会死锁。
测试代码:
public class Program
{
private static void Main(string[] args)
{
MyClass mc = new MyClass();
mc.Test(1000);
Console.WriteLine("运行结束");
Console.ReadKey();
}
}
class MyClass
{
public void Test(int i)
{
lock (this)
{
if (i > 10)
{
i--;
Test(i);
}
}
}
}
作者:
杜磊
时间:
2013-4-1 22:56
好吧,这是微软的面试题,你居然拿到这里来问。
正解是,不会死锁。
加分回答是,因为参数是值类型的,只用值传递就行了,而值传递就是把值复制一份传到方法里。
假如这时候的参数是一个引用类型的参数,则会产生死引用。
死锁这个问题,是多线程里才有的概念。
这里不涉及到多线程,所以讨论死锁不死锁没有意义。
作者:
张正强
时间:
2013-4-2 07:36
杜磊 发表于 2013-4-1 22:56
好吧,这是微软的面试题,你居然拿到这里来问。
正解是,不会死锁。
加分回答是,因为参数是值类型的,只用 ...
正解啊,Lz真的不懂???还是......
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2