JAVA中的多线程——死锁

JAVA中的多线程——死锁

JAVA中的多线程——死锁

了解死锁,是为了开发中避免死锁。

  1. /*
  2.  * 死锁
  3.  * 同步中嵌套同步,锁却不同 
  4.  * 
  5.  * */
  6. class Ticket3 implements Runnable {
  7.     private int tick = 1000;
  8.     Object object = new Object();
  9.     boolean flag=true;
  10.     public void run() {
  11.         if(flag){
  12.         while (true) {
  13.             synchronized (object) {
  14.                 show1();
  15.             }
  16.         }
  17.         }
  18.         else {
  19.             while(true)
  20.                 show1();
  21.         }
  22.     }
  23.     public synchronized void show1(){
  24.         synchronized (object) {
  25.             if (tick > 0) {
  26.             }
  27.             try {
  28.                 Thread.sleep(10);
  29.             } catch (Exception e) {
  30.                 // TODO: handle exception
  31.             }
  32.             System.out.println(Thread.currentThread().getName() + "sale:" + tick--);
  33.         }
  34.     }
  35. }
  36. public class DeadLockDemo {
  37.     public static void main(String args[]) {
  38.         Ticket3 ticket1 = new Ticket3();
  39.         Thread t1 =new Thread(ticket1);
  40.         Thread t2=new Thread(ticket1);
  41.         t1.start();
  42.         try {
  43.             Thread.sleep(10);
  44.         } catch (Exception e) {
  45.             // TODO: handle exception
  46.         }
  47.         ticket1.flag=false;
  48.         t2.start();
  49.     }
  50. }

 原文地址http://www.bieryun.com/3712.html