经典线程死锁

代码例子如下:

public class TestDeadLock implements Runnable
{
    public int flag = 1;
    static Object S1 = new Object(), S2=new Object();
    
    public void run()
    {
        System.out.println("flag="+flag);

        if(flag==1)
        {
            synchronized(S1)
            {
                try{
                    Thread.sleep(500);
                }
                catch(Exception e)
                {
                    e.printStackTrace();
                }
            }

                synchronized(S2)
                {
                    System.out.println("1");
                }
            } 
        }

        if(flag==0)
        {
            synchronized(S2)
            {
                try{
                    Thread.sleep(500);
                }
                catch(Exception e)
                {
                    e.printStackTrace();
                }
                synchronized(S1){
                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();
}

 

原文地址:

http://www.blogjava.net/Werther/archive/2009/03/12/259258.html

posted on 2010-01-28 16:47  中道学友  阅读(346)  评论(0编辑  收藏  举报

导航

技术追求准确,态度积极向上