线程安全的问题,知道的给说下,谢谢
根据线程安全的相关知识,分析一下代码,当调用test方法时i>10时是否会引起死锁?并简单说明理由
public void test(int i)
{
lock (this)
{
if (i > 0)
{
i--;
test(i);
}
}
}
(有知道的给说下,谢谢)
长风秋雁
浏览 235回答 2
2回答
-
ibeautiful
你的问题描述的不够清楚,但是我可以告诉你这段代码不会出现死锁。
原因:只会出现资源竟用的问题,你lock(this){}对于单个线程(如A1)是可以重入的,即进入的线程A1可以无限调用lock(this){}。但是因为lock资源独占的问题,所以在A1没有完全退出lock(this){}块之前别的线程是无法进入lock(this){}临界区的
打开App,查看更多内容