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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梁小刀11 中级黑马   /  2015-2-8 15:40  /  795 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package produtor_consumer;

  2. public class APP {
  3. public static void main(String[] args) {
  4.         movie m=new movie();
  5.         player p=new player(m);
  6.         watcher w=new watcher(m);
  7.          new Thread(p).start();
  8.          new Thread(w).start();
  9.         }
  10. }


  11. class movie {
  12.         private String str;
  13.         private boolean flag=true;
  14.        
  15. public synchronized void play(String str){
  16.         if(!flag){
  17.                 try {
  18.                         this.wait();
  19.                 } catch (InterruptedException e) {
  20.                        
  21.                         e.printStackTrace();
  22.                 }
  23.         }
  24.         try {
  25.                 Thread.sleep(500);
  26.         } catch (InterruptedException e) {
  27.                 // TODO Auto-generated catch block
  28.                 e.printStackTrace();
  29.         }
  30.         System.out.println("生产了-->"+str);
  31.         this.str=str;
  32.         this.notify();
  33.         this.flag=false;
  34.        
  35. }
  36. public  synchronized void  watch(){
  37.         if(flag){
  38.                 try {
  39.                         this.wait();
  40.                 } catch (InterruptedException e) {
  41.                         // TODO Auto-generated catch block
  42.                         e.printStackTrace();
  43.                 }
  44.         }
  45.         try {
  46.                 Thread.sleep(200);
  47.         } catch (InterruptedException e) {
  48.                 // TODO Auto-generated catch block
  49.                 e.printStackTrace();
  50.         }
  51.         System.out.println("消费了-->"+str);
  52.         this.notify();
  53.         this.flag=true;
  54. }

  55. }



  56. class player implements Runnable {
  57.     private movie m;

  58.         public player(movie m) {
  59.                 super();
  60.                 this.m = m;
  61.         }

  62.         @Override
  63.         public  void run() {
  64.         for(int i=0;i<200;i++){
  65.                 if(0==i%2){
  66.                
  67.                         m.play("左青龙");
  68.                 }else{
  69.                         m.play("右白虎");
  70.                 }
  71.         }
  72.                
  73.         }
  74.    
  75. }

  76. class watcher implements Runnable {
  77. private movie m;
  78.         public watcher(movie m) {
  79.         super();
  80.         this.m = m;
  81. }
  82.         @Override
  83.         public void run() {
  84.                 for(int i=0;i<20;i++){
  85.                         m.watch();
  86.                 }
  87.                
  88.         }
  89.        
  90.        

  91. }
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马