惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - Franky
博客园_首页
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
IT之家
IT之家
The Cloudflare Blog
V
Visual Studio Blog
罗磊的独立博客
T
Tailwind CSS Blog
S
SegmentFault 最新的问题
Hugging Face - Blog
Hugging Face - Blog
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
D
Docker
Last Week in AI
Last Week in AI
B
Blog RSS Feed
C
Check Point Blog
J
Java Code Geeks
The GitHub Blog
The GitHub Blog
有赞技术团队
有赞技术团队
博客园 - 聂微东
MongoDB | Blog
MongoDB | Blog
雷峰网
雷峰网

博客园 - 栖息的熊

Mark一些关于线程同步的信息 【转载】安卓巴士Android开发神贴整理 关于Join 异常诡异的mysql连接异常:Fatal error encountered during command execution. .Net中的安全机制 用定制特性规范构件调用 用重载操作符实现用户数据类型的转换 override和new关键词的差别 你必须知道的值传递和引用传递 windows用户配置文件的复制 求职:本人从事3年工作流引擎开发,熟悉XPDL,.net3.5中WF,Biztalk,开源工作流引擎OBE,期望工作地点上海 对Activity副本的再理解 Windows Workflow Foundation中实现人工活动的demo,按照XPDL规范的实现 WF消息队列的使用 查数据库死锁的实际例子 喜欢使用VMware的.net程序员要注意呀(Visual Studio启动不了的问题) 编译器错误信息: CS1595: 已在多处定义“ ”;一种可能出现的情况 BPM业务场景分析(1)——内部交易合并开票 高级工作流模式深入业务场景分析(1)——多路合并
误人子弟的面试题答案
栖息的熊 · 2008-11-18 · via 博客园 - 栖息的熊

        看到一道.net的面试题,下面附上题目和网上的答案(注意答案是错误的)

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

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

        网上的答案:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)

        答案确实是不会发生死锁,但理由是错的,看看MSDN上的解释:

        Lock确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。

        原来的递归明明在一个线程中,哪来的阻塞呢。