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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /*
  2. 死锁。
  3. */
  4. class DeadLockDemo implements Runnable
  5. {
  6.         static Object chopsticks = new Object();
  7.         static Object knifeAndFork = new Object();
  8.         private boolean flag;
  9.         DeadLockDemo(boolean flag){
  10.                 this.flag = flag;
  11.         }

  12.         public void run(){
  13.                 if(flag){
  14.                         while(true){
  15.                                 try{
  16.                                         Thread.sleep(1000);
  17.                                 }catch(InterruptedException e){
  18.                                         e.printStackTrace();
  19.                                 }
  20.                                 synchronized(chopsticks){
  21.                                        
  22.                                         System.out.println(Thread.currentThread().getName()
  23.                                                         + "----  if  ----  chopsticks");

  24.                                         synchronized(knifeAndFork){
  25.                                                 System.out.println(Thread.currentThread().getName()
  26.                                                                 + "----  if  ----  knifeAndFork");
  27.                                         }
  28.                                 }
  29.                         }
  30.                 }else{
  31.                         while(true){
  32.                                 try{
  33.                                                 Thread.sleep(1000);
  34.                                         }catch(InterruptedException e){
  35.                                                 e.printStackTrace();
  36.                                 }

  37.                                 synchronized(knifeAndFork){
  38.                                
  39.                                         System.out.println(Thread.currentThread().getName()
  40.                                                         + "----  else  ----  knifeAndFork");
  41.                                         //continue;
  42.                                         /**/synchronized(chopsticks){
  43.                                                 System.out.println(Thread.currentThread().getName()
  44.                                                                 + "----  else  ----  chopsticks");
  45.                                         }
  46.                                 }
  47.                         }
  48.                 }
  49.         }
  50. }
复制代码

点评

好复杂的样子  发表于 2015-7-14 00:17

7 个回复

倒序浏览
好深奥好深奥
回复 使用道具 举报
死锁是理解了,但是如果要解的话要怎么做呢?这个就弄不懂了
代码是书上的,觉得弄懂了怎么锁起来的又怎么解锁的才能掌握多线程的锁。
回复 使用道具 举报
赞一个 赞一个!
回复 使用道具 举报
感觉好高大山
回复 使用道具 举报
还没学到,楼主加油
回复 使用道具 举报
感觉得很厉害的样子
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马