A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王浩龙 中级黑马   /  2014-3-13 14:25  /  616 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王浩龙 于 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. }
复制代码
我能理解毕老师讲的死锁的问题,就是互相拿着对方的锁不放开。里边我有一点疑惑就是到底有几个锁
请看下面的代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马