黑马程序员技术交流社区

标题: 关于死锁中锁的问题 [打印本页]

作者: 王浩龙    时间: 2014-3-13 14:25
标题: 关于死锁中锁的问题
本帖最后由 王浩龙 于 2014-3-15 17:28 编辑
  1. class Ticket implements Runnable{
  2.         private  int tick = 1000;
  3.         Object obj = new Object();
  4.         boolean flag = true;
  5.         public  void run(){
  6.                 if(flag){
  7.                         while(true){
  8.                                 //这里是不是有三个锁呢?自己的锁加上show()的锁,show()又有synchronized(obj)
  9.                                 synchronized(obj){
  10.                                         show();
  11.                                 }
  12.                         }
  13.                 }
  14.                 else
  15.                         while(true)
  16.                                 show();
  17.         }
  18.         public synchronized void show(){
  19.                 synchronized(obj){
  20.                         if(tick>0){
  21.                                 try{Thread.sleep(10);}catch(Exception e){}
  22.                                 System.out.println(Thread.currentThread().getName()+"....code : "+ tick--);
  23.                         }
  24.                 }
  25.         }
  26. }
  27. class  DeadLockDemo{
  28.         public static void main(String[] args) {

  29.                 Ticket t = new Ticket();

  30.                 Thread t1 = new Thread(t);
  31.                 Thread t2 = new Thread(t);
  32.                 t1.start();
  33.                 try{Thread.sleep(10);}catch(Exception e){}
  34.                 t.flag = false;
  35.                 t2.start();
  36.         }
  37. }
复制代码
我能理解毕老师讲的死锁的问题,就是互相拿着对方的锁不放开。里边我有一点疑惑就是到底有几个锁
请看下面的代码






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2