幼鸟并发编程

时间:2015-04-21 13:26:30

标签: java monitors

我遇到了编程方面的问题,我自己无法解决。我必须使用Java Monitors来解决它。

问题如下:

亚马逊丛林深处生活着一种叫做Cooeecooee的鸟类。这些非凡的鸟类在养小鸡方面有不同寻常的行为:

  1. 父母在狩猎,在窝里放食物和休息之间交替。
  2. 父母通过在巢中放置一定量(或部分)食物来喂养雏鸡。
  3. 为了教小鸡他们必须吃所有可用的食物,父母从不将食物存放在巢中,直到所有以前的食物都被消耗掉。如果巢不是空的,它们会等到巢是空的,然后再添加食物。
  4. 请注意,巢穴最多可以容纳食物C的容量(奇怪的是,父母从来没有从狩猎中返回超过C部分的食物。观察表明,父母将以这种方式喂养自己的额外食物最多可以存放C部分的食物。
  5. 与此同时,小鸡会做婴儿所做的一切:

    1. 睡眠
    2. 吃(一次食用一份)
    3. 生产鸟粪
    4. 该程序模拟这些鸟类的生命,创建两个父进程和几个雏鸡进程。

      小鸡和父母的行为因此类似于以下伪代码所描述的情况:

      process Chicks(many of them) {
          repeat {
              sleep();
              get_food();
              eat();
              digest_and_poop();
          }
      }
      
      process Parents(just two) {
          repeat {
              hunt();
              deposit_food();
              rest();
          }
      }
      

      将使用以下参数调用模拟:

      • 小鸡:是小鸡进程的数量
      • baby_iter:婴儿小鸡在成年之前所经历的迭代次数
      • max_food_size:父母从狩猎中带回来的最大部分大小(与巢的容量相同,事实证明)
      • hunting_success_rate:表示父母在打猎时的成功率。 50%的比率意味着父母在没有食物的情况下返回。

      同步由监视器完成。

      有人能帮助我吗?因为我已经解决了与Semaphores类似的问题,但我无法弄清楚Monitors如何在Java上工作。

      谢谢。

0 个答案:

没有答案