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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class Resource
  2. {
  3.         private String name;
  4.         private int count = 1;
  5.         private boolean flag = false;

  6.         public synchronized void set(String name)
  7.         {
  8.                 if (flag)
  9.                         try
  10.                         {
  11.                                 this.wait();       
  12.                         }
  13.                         catch (Exception e)
  14.                         {
  15.                         }
  16.                
  17.                 this.name = name+"....."+count++;
  18.                 System.out.println(Thread.currentThread().getName()+"...生产者..."+this.name);
  19.                
  20.                 flag = true;
  21.                 this.notify();
  22.         }
  23.         public synchronized void out()
  24.         {
  25.                 if (!flag)
  26.                         try
  27.                         {
  28.                                 this.wait();
  29.                         }
  30.                         catch (Exception e)
  31.                         {
  32.                         }
  33.                
  34.                 System.out.println(Thread.currentThread().getName()+"..........消费者....."+this.name);

  35.                 flag = false;
  36.                 this.notify();
  37.         }
  38. }

  39. class Producer implements Runnable
  40. {
  41.         private Resource r;
  42.         Producer(Resource r)
  43.         {
  44.                 this.r = r;
  45.         }
  46.         public void run()
  47.         {
  48.                 while (true)
  49.                 {
  50.                         r.set("商品");

  51.                 }
  52.         }
  53. }
  54. class Consumer implements Runnable
  55. {
  56.         private Resource r;
  57.         Consumer(Resource r)
  58.         {
  59.                 this.r= r;
  60.         }

  61.         public void run()
  62.         {
  63.                 while (true)
  64.                 {
  65.                         r.out();
  66.                 }
  67.         }
  68. }


  69. class  ProducerConsumerTest
  70. {
  71.         public static void main(String[] args)
  72.         {
  73.                 Resource r = new Resource();

  74.                 Producer pro = new Producer(r);
  75.                 Consumer con = new Consumer(r);

  76.                 Thread t1 = new Thread(pro);
  77.                 Thread t2 = new Thread(con);
  78.                 Thread t3 = new Thread(pro);
  79.                 Thread t4 = new Thread(con);
  80.                 /*
  81.                 Thread t1 = new Thread(pro);
  82.                 Thread t2 = new Thread(pro);
  83.                 Thread t3 = new Thread(con);
  84.                 Thread t4 = new Thread(con);
  85.                 */

  86.                 t1.start();
  87.                 t2.start();
  88.                 t3.start();
  89.                 t4.start();

  90.         }
  91. }
复制代码

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1

查看全部评分

1 个回复

倒序浏览
试着运行过,也没搞懂,求高手解答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马