黑马程序员技术交流社区

标题: 关于多线程死锁的一个简单例子 [打印本页]

作者: EarlyHeart    时间: 2014-7-9 20:55
标题: 关于多线程死锁的一个简单例子
本帖最后由 EarlyHeart 于 2014-7-9 20:58 编辑
  1. public class Demo4 {
  2.         public static void main(String[] args) throws InterruptedException {
  3.                 EatFood e = new EatFood();
  4.                 Thread t1 = new Thread(e, "张三");
  5.                 Thread t2 = new Thread(e, "李四");
  6.                 t1.start();
  7.                 t2.start();
  8.         }

  9. }

  10. class EatFood implements Runnable {
  11.         Object o = new Object();
  12.         int food = 1000;

  13.         public void run() {
  14.                 while (true) {
  15.                         synchronized (this) {
  16.                                 //假设同时刻李四来到了这里
  17.                                 synchronized (o) {
  18.                                         if (food > 0)
  19.                                                 System.out.println(Thread.currentThread().getName()
  20.                                                                 + "抢到了第" + (food--) + "个food");
  21.                                         else
  22.                                                 return;

  23.                                 }
  24.                         }
  25.                         synchronized (o) {
  26.                                 //假设此时刻张三来到了这里
  27.                                 synchronized (this) {
  28.                                         if (food > 0)
  29.                                                 System.out.println(Thread.currentThread().getName()
  30.                                                                 + "抢到了第" + (food--) + "个food");
  31.                                         else
  32.                                                 return;
  33.                                 }
  34.                         }
  35.                 }
  36.         }
  37. }
复制代码






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