黑马程序员技术交流社区

标题: DAY_12 [打印本页]

作者: 三土    时间: 2015-7-25 20:27
标题: DAY_12
  1. package com.itheima1;

  2. import java.util.concurrent.locks.Condition;
  3. import java.util.concurrent.locks.Lock;
  4. import java.util.concurrent.locks.ReentrantLock;

  5. public class tongxin {

  6.         public static void main(String[] args) {

  7.                 Resouce r = new Resouce();
  8.                 new Thread(new Producer(r)).start();
  9.                 new Thread(new Producer(r)).start();
  10.                 new Thread(new Consumer(r)).start();
  11.                 new Thread(new Consumer(r)).start();
  12.         }

  13. }

  14. class Resouce {

  15.         private String name;
  16.         private int count = 1;
  17.         private boolean flag = false;
  18.         private Lock lock = new ReentrantLock();

  19.         private Condition condition_input =   lock.newCondition();

  20.         private Condition condition_output = lock.newCondition();


  21.         public void set(String name) {
  22.                 lock.lock();

  23.                 try {
  24.                         while (flag) {
  25.                                 condition_input.await();
  26.                         }
  27.                         this.name = name + count++;
  28.                         System.out.println(Thread.currentThread().getName()
  29.                                         + "...生产者......" + this.name);
  30.                         flag = true;
  31.                         condition_output.signal();

  32.                 } catch (InterruptedException e) {
  33.                         // TODO Auto-generated catch block
  34.                         e.printStackTrace();
  35.                 } finally {
  36.                         lock.unlock();
  37.                 }

  38.         }

  39.         public synchronized void out() {
  40.                 lock.lock();

  41.                 try {
  42.                         while (!flag) {
  43.                                 condition_output.await();
  44.                         }
  45.                         System.out.println(Thread.currentThread().getName() + "+消费者+"
  46.                                         + this.name);
  47.                         flag = false;
  48.                         condition_input.signal();
  49.                 } catch (Exception e) {
  50.                         // throw new RuntimeException();
  51.                 } finally {
  52.                         lock.unlock();
  53.                 }

  54.         }
  55. }

  56. class Producer implements Runnable {
  57.         private Resouce r;

  58.         Producer(Resouce r) {
  59.                 this.r = r;
  60.         }

  61.         public void run() {
  62.                 while (true) {
  63.                         r.set("汉堡");
  64.                 }
  65.         }
  66. }

  67. class Consumer implements Runnable {
  68.         private Resouce r;

  69.         Consumer(Resouce r) {
  70.                 this.r = r;
  71.         }

  72.         public void run() {
  73.                 while (true) {
  74.                         r.out();
  75.                 }
  76.         }
  77. }
复制代码





作者: 大鹏37    时间: 2015-7-25 20:43
入学十二天了吗,感觉怎么样啊

作者: 三土    时间: 2015-7-25 21:11
大鹏37 发表于 2015-7-25 20:43
入学十二天了吗,感觉怎么样啊

在家里看视频哦! 复习一遍




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