Java 雏鸟并行程序设计

Java 雏鸟并行程序设计,java,monitors,Java,Monitors,我有一个并发编程的问题,我自己解决不了。我必须使用Java监视器来解决这个问题 问题如下: 在亚马逊丛林深处生活着一种名为“库伊库伊”的鸟类。这些非凡的鸟类在饲养小鸡时有着不同寻常的行为: 父母轮流打猎、把食物丢进巢穴和休息。 父母通过在巢中放置一定数量或部分食物来喂养小鸡。 为了教会小鸡必须吃所有可以吃的食物,父母从不把食物放在鸟巢里,直到之前所有的食物都吃光了。如果巢不是空的,他们会等到巢是空的,然后再添加食物。 请注意,鸟巢最多只能容纳C份食物。奇怪的是,父母从不会带着超过C份的狩猎食物回

我有一个并发编程的问题,我自己解决不了。我必须使用Java监视器来解决这个问题

问题如下:

在亚马逊丛林深处生活着一种名为“库伊库伊”的鸟类。这些非凡的鸟类在饲养小鸡时有着不同寻常的行为:

父母轮流打猎、把食物丢进巢穴和休息。 父母通过在巢中放置一定数量或部分食物来喂养小鸡。 为了教会小鸡必须吃所有可以吃的食物,父母从不把食物放在鸟巢里,直到之前所有的食物都吃光了。如果巢不是空的,他们会等到巢是空的,然后再添加食物。 请注意,鸟巢最多只能容纳C份食物。奇怪的是,父母从不会带着超过C份的狩猎食物回来。观察结果表明,父母会用额外的食物喂养自己,这样最多会沉积C部分食物。 与此同时,小鸡们做着婴儿所做的一切:

睡觉 一次吃一份食物 生产鸟粪 该程序模拟了这些鸟类的生活,创建了两个父进程和几个小鸡进程

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

process Chicks(many of them) {
    repeat {
        sleep();
        get_food();
        eat();
        digest_and_poop();
    }
}

process Parents(just two) {
    repeat {
        hunt();
        deposit_food();
        rest();
    }
}
将使用以下参数调用模拟:

chicks:是chick进程的数量 baby_iter:小鸡成年前的迭代次数是多少 最大食物大小:父母从狩猎中带回的最大食物大小是否与巢穴的容量相同 狩猎成功率:表示父母狩猎时的成功率。50%的比率意味着父母返回时没有食物。 同步由监视器完成

有人能帮我吗?因为我已经解决了信号量的类似问题,但我不知道监视器在Java上是如何工作的


谢谢。

我们需要真正的代码来了解您的问题所在。@CaffeineToCode我不知道如何开始编写代码。我在谷歌搜索了一个使用锁的解决方案,但它只是一段代码。code private Lock Lock=新的ReentrantLocktrue;私有条件not_empty=lock.newCondition;public void deposit_food{lock.lock;try{while max_food_size!=0 not_empty.await;}捕获异常e{System.err.printlne.getMessage;e.printStackTrace;}最后{lock.unlock;}不要将其放在注释中!