日期:2014-05-20 浏览次数:20834 次
public class TestDeadLock implements Runnable
{
    public int flag = 1 ;
    static Object o1 = new Object(),o2 = new Object();
    public void run()
    {
          System.out.println("flag = "+flag);
          if(flag == 1)
          {
                synchronized(o1)
                {
                      try
                      {
                            Thread.sleep(200);
                      }
                      catch(Exception e)
                      {
                            e.printStackTrace();
                      }
                      
                }
                synchronized(o2)
                {
                      System.out.println("1");
                }
          }
    
    
    if(flag == 0)
    {
         synchronized(o2)
         {
               try
               {
                     Thread.sleep(200);
               }
               catch(Exception e )
               {
                    e.printStackTrace();
               }
               synchronized(o1)
               {
                   System.out.println("0");
               }
             
         }
    }
  }
    
    public static void main(String[] args)
    {
         TestDeadLock td1 = new TestDeadLock();
         TestDeadLock td2 = new TestDeadLock();
         td1.flag = 1 ;
         td2.flag = 0 ;
         
         Thread t1 = new Thread(td1);
         Thread t2 = new Thread(td2);
         t1.start();
         t2.start();
         
    }
}
         synchronized(o2)
                {
                      System.out.println("1");
                }