一个关于多线程的面试题,网上大多给了错误的答案
2011-04-20 10:01
381 查看
根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}
答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)
原来自己没有理解多线程,还以为test的参数是是对象都发送死锁,其实根本不会。
其实不管方法test的参数是基本类型还是对象都不会发送死锁。认为发生死锁的根本就没有理解死锁。
如果某个线程锁定了当前类的这个方法,只有彻底退出其他线程才可以访问此方法。另外一个线程可以多次锁定已经锁定的类。
作者:xuexiaodong2009 发表于2011-4-20 18:01:00 原文链接
阅读:37 评论:0 查看评论
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}
答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)
原来自己没有理解多线程,还以为test的参数是是对象都发送死锁,其实根本不会。
其实不管方法test的参数是基本类型还是对象都不会发送死锁。认为发生死锁的根本就没有理解死锁。
如果某个线程锁定了当前类的这个方法,只有彻底退出其他线程才可以访问此方法。另外一个线程可以多次锁定已经锁定的类。
作者:xuexiaodong2009 发表于2011-4-20 18:01:00 原文链接
阅读:37 评论:0 查看评论
相关文章推荐
- 一个关于多线程的面试题,网上大多给了错误的答案
- 15+N个顶级网上流行的Java多线程面试题及自己总结的答案(遇到即会更新)
- 关于写socket遇到的错误,网上搜到的答案
- java,web应用中,关于多用户访问,是不是就是一个用户等于一个线程? 50 那一般的时候是多用户多线程还是多用户单线程。 6S根本停不下来 | 浏览 2065 次 我有更好的答案 发布于2016-
- C++primer习题答案中关于迭代器使用的一个错误
- 史上最全Java多线程面试题及答案
- 关于DateFormat构造时犯的一个错误
- 一个资深DBA提出的面试题及答案
- 关于一个写Masm的小错误........
- 关于autoreleasepool一个常见的面试题
- 一个关于多线程的简单实例(抄书)
- [Silverlight] 一个易犯的错误:关于调用 WCF 服务
- 网上关于sort结构体排序都不完整,我来写一个完整版的
- 15个顶级多线程面试题及答案
- 关于Recyclerview使用时的一个错误java.lang.NoSuchMethodError: No static method getMatrix(Landroid/view/View;)
- 15个顶级Java多线程面试题及答案
- 2015-3-27:关于跑程序出现的AWK错误,转载了一个《AWK 简明教程》
- java并发多线程面试题和答案
- 关于多线程的一个例子(UI实时显示)
- *Delphi多线程的OnTerminate属性(附加一个关于临界区线程同步的例子)