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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© @ne_pie尒ce 中级黑马   /  2013-11-18 22:30  /  994 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

怎么出现死锁和谐的情况?能不能写一个可以死锁和谐的例子给借鉴一下?

2 个回复

正序浏览
帖子已分类,若仍有疑惑,可重新提问
回复 使用道具 举报
A持有B锁,B持有A锁,都需要对方的锁,最直接的死锁案例
只要不是死锁就和谐了吧,,这个怎么写
class LockA
{
        public static final LockA locka = new LockA();
}
class LockB
{
        public static final LockB lockb = new LockB();
}

class Dead implements Runnable
{
        boolean flag = true;
        Dead (boolean flag){
                this.flag = flag;
        }
        public void run(){
                while(true){
                        if(flag==true){
                                synchronized(LockA.locka){
                                        System.out.println("if------持有A锁");
                                        synchronized(LockB.lockb){
                                                System.out.println("if-------持有B锁");
                                        }
                                }
                        }
                        else{
                                synchronized(LockB.lockb){
                                        System.out.println("else------持有B锁");
                                        synchronized(LockA.locka){
                                                System.out.println("else------持有A锁");
                                        }
                                }
                        }
                }
        }
}

class DeadLock
{
        public static void main(String[] args)
        {
                Dead d1 = new Dead(true);
                Dead d2 = new Dead(false);

                Thread t1 = new Thread(d1);
                Thread t2 = new Thread(d2);

                t1.start();
                t2.start();
        }
}

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 例子不错,但没有写在代码框中,下次注意了.

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马