多线程——死锁

来源:互联网 发布:淘宝hd微淘 编辑:程序博客网 时间:2024/05/22 14:10
  1. * 
  2. 死锁。 
  3. 同步中嵌套同步。 
  4.  
  5. */  
  6.   
  7. class Ticket implements Runnable  
  8. {  
  9.     private  int tick = 1000;  
  10.     Object obj = new Object();  
  11.     boolean flag = true;  
  12.     public  void run()  
  13.     {  
  14.         if(flag)  
  15.         {  
  16.             while(true)  
  17.             {  
  18.                 synchronized(obj)  
  19.                 {  
  20.                     show();  
  21.                 }  
  22.             }  
  23.         }  
  24.         else  
  25.             while(true)  
  26.                 show();  
  27.     }  
  28.     public synchronized void show()//this  
  29.     {  
  30.         synchronized(obj)  
  31.         {  
  32.             if(tick>0)  
  33.             {  
  34.                 try{Thread.sleep(10);}catch(Exception e){}  
  35.                 System.out.println(Thread.currentThread().getName()+"....code : "+ tick--);  
  36.             }  
  37.         }  
  38.     }  
  39. }  
  40.   
  41.   
  42. class  DeadLockDemo  
  43. {  
  44.     public static void main(String[] args)   
  45.     {  
  46.   
  47.         Ticket t = new Ticket();  
  48.   
  49.         Thread t1 = new Thread(t);  
  50.         Thread t2 = new Thread(t);  
  51.         t1.start();  
  52.         try{Thread.sleep(10);}catch(Exception e){}  
  53.         t.flag = false;  
  54.         t2.start();  
  55.   
  56.   
  57.     }  
  58. }