黑马程序员技术交流社区

标题: 线程没学好,这个怎么解锁? [打印本页]

作者: 夜写意    时间: 2015-7-13 22:21
标题: 线程没学好,这个怎么解锁?
  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-13 22:26
好深奥好深奥
作者: 夜写意    时间: 2015-7-13 22:41
死锁是理解了,但是如果要解的话要怎么做呢?这个就弄不懂了
代码是书上的,觉得弄懂了怎么锁起来的又怎么解锁的才能掌握多线程的锁。
作者: 噜啦啦噜啦啦    时间: 2015-7-13 22:46
赞一个 赞一个!
作者: pathnet    时间: 2015-7-14 00:15
感觉好高大山
作者: 逆袭白富美    时间: 2015-7-14 00:24
还没学到,楼主加油
作者: 人造番茄    时间: 2015-7-14 07:07
感觉得很厉害的样子




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