`
bubble
  • 浏览: 146201 次
  • 性别: Icon_minigender_1
  • 来自: 辽宁
社区版块
存档分类
最新评论

写的作业,关于生产者消费者

阅读更多
java 代码
  1. Class prodct{}//为产品实体,内容省略    
  2. Interface People{   
  3.   
  4.      Void product();   
  5.   
  6.      Void consume();   
  7.   
  8. }   
  9.   
  10. //生产者    
  11.   
  12. Class Producer implement People{   
  13.   
  14. Private int amount=10;//默认一次生产10个产品   
  15.   
  16. Void product(Buffer buffer){   
  17.   
  18.    product(this.amount,buffer);   
  19.   
  20.  }   
  21.   
  22.  //用户可以自行设置一次生产产品的数量   
  23.   
  24. Void product( int AutherAmount, Buffer buffer){   
  25.   
  26.    for(var i=1;i<= AutherAmount;i++){   
  27.   
  28.    createProduct(buffer);   
  29.   
  30. }   
  31.   
  32.  }   
  33.   
  34. Void createProduct(Buffer buffer){   
  35.   
  36.    //得到新产品,并向Buffer中投放   
  37.   
  38.    buffer.P( );   
  39.   
  40.    buffer.object[buffer.getFull]=new Product();   
  41.   
  42.    buffer.V( );   
  43.   
  44. }   
  45.   
  46. }   
  47.   
  48. //消费者   
  49.   
  50. Class Consumer implement People{   
  51.   
  52. Private int amount=10;   
  53.   
  54. Public Product[] products;   
  55.   
  56. consume(Buffer buffer){   
  57.   
  58.    consume(this.amount,buffer);   
  59.   
  60.  }   
  61.   
  62. consume(int AutherAmount, Buffer buffer){   
  63.   
  64.    for(var i=1;i<= AutherAmount;i++){   
  65.   
  66.    getProduct(budder);   
  67.   
  68. }   
  69.   
  70.     
  71.   
  72.  }   
  73.   
  74. Void getProduct(Buffer buffer){   
  75.   
  76.    //Buffer中得到新产品   
  77.   
  78.    buffer.V( );   
  79.   
  80.    Producs[buffer.getEmpty]=buffer.object[buffer.getFull];   
  81.   
  82.    buffer.P( );   
  83.   
  84. }   
  85.   
  86. }   
  87.   
  88. Interface PandV{   
  89.   
  90. Void P( );   
  91.   
  92. Void V( );   
  93.   
  94. }   
  95.   
  96. //缓冲区   
  97.   
  98. Class Buffer implement PandV{   
  99.   
  100.      Public Object[] object=new object[];   
  101.   
  102.      Private int full;   
  103.   
  104.      Private int empty;   
  105.   
  106.      Public Int getFull(){return this.full;}   
  107.   
  108. Public Int getEmpty(){return this.empty;}   
  109.   
  110.      Void Buffer(){   
  111.   
  112.          Buffer(10);//默认缓冲区大小为10   
  113.   
  114. }   
  115.   
  116.      Void Buffer(int size){   
  117.   
  118.     This.object.length=size;   
  119.   
  120.     This.full=0;//full初始为0   
  121.   
  122.     This.empty= size;//empty初始为buffer的大小   
  123.   
  124. }   
  125.   
  126. Viod P( ){   
  127.   
  128.     If(full>0){full--;}       
  129.   
  130. }   
  131.   
  132. Viod V( ){   
  133.   
  134.     If(empty<= object.length){ empty++; }   
  135.   
  136. }   
  137.   
  138. }   
  139.   
  140. Class done{   
  141.   
  142. Public static void main(String[] args){   
  143.   
  144.      Public People people;   
  145.   
  146.      Buffer bf=new Buffer();   
  147.   
  148.      people=new Producer();   
  149.   
  150.      people.produce(bf);   
  151.   
  152. people=new Consumer();   
  153.   
  154. people.consume(bf);   
  155.   
  156. }   
  157.   
  158. }   
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics