面试中的一个小问题引发的思考
2014-11-14 19:25
337 查看
public void Fun(int i) { lock(this) { if(i>10) i--; Fun(i); } }
问题:上面的代码是否会发生死锁?
这个问题其实考察的是:this和lock这两个关键字。如果对this不是很熟悉的话,肯定会回答,会发生死锁。其实不然,这里并不会发生死锁。这是因为:this:代表的是当前对象,若果将代码变成这样的形式:
在C#中,this关键字代表当前实例,我们可以用this.来调用当前实例的成员方法,变量,属性,字段等;
public class Demo
{
static void Main()
{
Fun(14);
}
}
public void Fun(int i) { lock(this) { if(i>10) i--; Fun(i); } }
此时,我们可以看到this代表的是Demo这个对象。因此,这里lock锁定的是Demo这个对象。所以,锁定的对象与i值无关,因此不会发生死锁。
相关文章推荐
- 一个iphone的设置问题引发的思考!
- 一个与直觉相悖的概率问题引发的严肃思考(转自果壳)
- 一个游戏引发的思考(概率问题)
- 一个Java NIO问题引发的思考
- android开发之一个手机重启问题引发的思考
- 一个“粘贴”问题引发的思考
- 一个JavaScript问题引发的思考
- 由一个问题引发的思考——关于数据库的外键约束
- 一个JavaScript问题引发的思考
- 2015-11-02-04-一个问题引发的思考
- 一个小问题引发的论证思考
- 一个distinct问题引发的思考
- 一个JavaScript问题引发的思考
- 一个粗心的问题引发的思考
- 一个面试问题引发的戏剧性争议
- 沫沫金::一个小问题引发的大思考
- 一个distinct问题引发的思考
- 关于中国产品的质量问题-一个暖水袋引发的思考
- 细节:一个很SB的问题引发的思考