Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中性浴室使用信号灯&;监视器_Java_Concurrency_Semaphore_Monitor - Fatal编程技术网

Java中性浴室使用信号灯&;监视器

Java中性浴室使用信号灯&;监视器,java,concurrency,semaphore,monitor,Java,Concurrency,Semaphore,Monitor,我被指派进行并发编程,编写一个男女通用的厕所。这似乎是这门学科的一项相当普遍的作业。对于不熟悉的人,设置规则(至少在本例中) 浴室可供男性和女性使用,但不能同时供男性和女性使用 你一次能在厕所里找到的最多的人是5个人 如果使用信号量,则必须自己实现 在学习这门学科之前,我已经很久没有编写代码了,而且我的知识已经过时了。我最初只是用计数器来编码,在理解程序中的信息流时遇到了问题,而这个版本却一无所获 所以我又开始了,我想知道我应该怎么做。我最初的想法是有一个厕所,用一个二进制信号量实现,浴室显

我被指派进行并发编程,编写一个男女通用的厕所。这似乎是这门学科的一项相当普遍的作业。对于不熟悉的人,设置规则(至少在本例中)

  • 浴室可供男性和女性使用,但不能同时供男性和女性使用
  • 你一次能在厕所里找到的最多的人是5个人
  • 如果使用信号量,则必须自己实现
在学习这门学科之前,我已经很久没有编写代码了,而且我的知识已经过时了。我最初只是用计数器来编码,在理解程序中的信息流时遇到了问题,而这个版本却一无所获

所以我又开始了,我想知道我应该怎么做。我最初的想法是有一个厕所,用一个二进制信号量实现,浴室显示器,限制为5个

我还读到,问题背后的想法最适合于每个人都是一根线的实现。如果是这种情况,它可能会很混乱,因为我曾经尝试过一次线程池(几周前),但它从未运行过-/


目前我还没有代码可以展示,所以我最关心的是如何设置东西的概要。

看起来这个问题已经在java中解决了

Erm…两个计数器,公/母计数器和一个随机计时器不工作…为什么?对不起,我不太明白你的问题。嗯,在第一次尝试中,它现在正处于饥饿状态,我不知道如何摆脱它。我想知道我是否最好修复它,或者从零开始,为每个人使用一个线程来实现它,并学习作业背后的预期课程,从长远来看,这样做可能更容易。