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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 胡浩 于 2013-6-5 13:06 编辑

package com.thread;
class DeadLockTest
{
public static void main(String[] args)
{
  Test a = new Test(true);
  Test b = new Test(false);
  Thread t1 = new Thread(a);
  Thread t2 = new Thread(b);
  t1.start();
  t2.start();
}
}
class Test implements Runnable
{
private boolean flag;
Test(boolean flag)
{
  this.flag = flag;
}
public void run()
{
  
  if(flag)
  {
   while(true)
    synchronized(MyLock.lockb)
    {
     System.out.println(Thread.currentThread().getName()+"..if   lockb....");
     synchronized(MyLock.locka)    {
      
      System.out.println(Thread.currentThread().getName()+"..if   locka....");
     }
    }
  }
  else
  {
   while(true)   
    synchronized(MyLock.lockb)
    {
     System.out.println(Thread.currentThread().getName()+"..else  lockb....");
     synchronized(MyLock.locka)
     {
      System.out.println(Thread.currentThread().getName()+"..else   locka....");
     }
    }
  }
}
}
class MyLock
{
public static final Object locka = new Object();
public static final Object lockb = new Object();
}


两个线程拿的两个所的顺序一致,不死锁?好像是不死锁。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

2 个回复

倒序浏览
将下面那两a和b或者上面那两a和b互换下应该就会死了

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
神之梦 发表于 2013-6-4 22:08
将下面那两a和b或者上面那两a和b互换下应该就会死了

换了以后就是必死锁
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马