A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© paozhuanyinyu 中级黑马   /  2014-8-13 21:00  /  1208 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我同步方法里面同步代码块,两个锁不一样,为什么没有死锁Object obj = new Object();

public synchronized void show()  // 同步方法的锁是this
        {
                synchronized(obj)       //同步代码块锁是object
        {
                        if(num>0)
                        {
                                try{Thread.sleep(10);}catch (InterruptedException e){}
                                System.out.println(Thread.currentThread().getName()+".....sale...."+num--);
                        }
                }
        }


2 个回复

倒序浏览
你是用多线程调用吗?死锁是出现在程序多线程调用的时候,cup在切换不同的线程进度时,才会出现的。
个人总结 死锁出现的条件:
1.多线程调用代码段、
2.在前一个条件下电脑CPU内核越少越容易出现死锁,
3.在以上两个条件下死锁是概率发生事件,而不是必须发生时间,简单来说就是在前两个条件下,看运气

点评

不明觉厉  发表于 2014-8-13 21:33
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马