一个简单的死锁小程序

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(500);
                }
                catch(Exception e)
                {
                    e.printStackTrace();
                }
            }
            synchronized(o2)
            {
                System.out.println("1");
            }            
         }
         if(flag == 0)
         {
                synchronized(o2)
                {
                    try
                    {
                        Thread.sleep(500);
                    }
                    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();
    }
}

 

posted on 2013-06-13 07:29  brave_bo  阅读(220)  评论(0)    收藏  举报

导航