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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 鹰击长空168 中级黑马   /  2015-1-11 18:02  /  986 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//创建一个死锁程序,采用同步中嵌套同步的方式
class LockBase implements Runnable
{
     static   Object obj1=new Object();
     static   Object obj2=new Object();
/*若obj1,obj2均用private修饰,则t1和t2中的obj1,obj2不同,不构成死锁
静态成员随着类的加载而存在于内存的方法区中,为共享数据;
私有成员随着对象的建立而存在,属于不同对象。
*/
     private boolean flag;   
     LockBase(boolean flag)
     {
        this.flag=flag;
     }
     public void run()
     {
            if(flag)
                {
                        for (;;)
                        {
                             synchronized(obj1)
                             {
                                   System.out.println(Thread.currentThread().getName()+"...Aobj1..run");
                                   synchronized(obj2)
                                   {
                                             System.out.println(Thread.currentThread().getName()+"...Aobj2..run");
                                   }
                            }
                    }
      }
       else
                for (;;)
                {
                        synchronized(obj2)
                        {
                                System.out.println(Thread.currentThread().getName()+"...Bobj2..run");
                                synchronized(obj1)
                                 {
                                       System.out.println(Thread.currentThread().getName()+"...Bobj1..run");
                                 }
                        }
                 }
      }
}
class LockDeadDemo
{
         public static void main(String [] args)
          {
                 Thread t1=new Thread(new LockBase(true));
                 Thread t2=new Thread(new LockBase(false));
                  t1.start();
                  t2.start();
          }
}

2 个回复

倒序浏览
不给吃鸭梨 来自手机 中级黑马 2015-1-11 18:19:40
沙发
本来就是要避免的问题,为什么还要优化呢?而且死锁的产生不仅仅是线程间的问题,如果一个进程资源分配不足也会有死锁的。
回复 使用道具 举报
不给吃鸭梨 发表于 2015-1-11 18:19
本来就是要避免的问题,为什么还要优化呢?而且死锁的产生不仅仅是线程间的问题,如果一个进程资源分配不足 ...

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