收藏线程死锁例子

public class TestDeadLock implements Runnable {
    public int flag=1;
    static Object o1=new Object();
    static Object o2=new Object();

    @Override
    public void run() {
        // TODO Auto-generated method stub
//       System.out.print("flag="+flag);
       if(flag==1){
           synchronized (o1) {
               try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
              
               synchronized (o2) {
                 System.out.println("----1");
            }
            
        }
       }
       
       if(flag==0){
           synchronized (o2) {
             try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                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 @ 2017-01-24 10:53  IT一族  阅读(101)  评论(0编辑  收藏  举报