一道以前的面试题

来源:互联网 发布:真无线耳机 推荐 知乎 编辑:程序博客网 时间:2024/05/17 07:02

根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。

public void test(int i)
{
      lock(this)
      {
           if (i>10)
           {
                i--; 
                test(i);
           }
     }
}


答:不会发生死锁。但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。

但如果把int换做一个object,那么死锁会发生。

原创粉丝点击