Java 舞厅舞者用旗语提问

Java 舞厅舞者用旗语提问,java,semaphore,Java,Semaphore,我正试图从“信号量小册子”中为“排他队列”问题编写一个解决方案。问题如下: 假设线程代表舞厅舞者,两种舞者,领导者和追随者,在进入舞池前排成两列等待。当领导者到达时,它会检查是否有追随者在等待。如果是这样的话,它们可以同时进行。否则它会等待 类似地,当跟随者到达时,它检查是否有引导者,并相应地继续或等待 我在舞厅上了以下课: public class Ballroom { public void leaderEntered(){ //the calling leader thread will

我正试图从“信号量小册子”中为“排他队列”问题编写一个解决方案。问题如下:

假设线程代表舞厅舞者,两种舞者,领导者和追随者,在进入舞池前排成两列等待。当领导者到达时,它会检查是否有追随者在等待。如果是这样的话,它们可以同时进行。否则它会等待

类似地,当跟随者到达时,它检查是否有引导者,并相应地继续或等待

我在舞厅上了以下课:

public class Ballroom {

public void leaderEntered(){
//the calling leader thread will either block, waiting for
//follower or will proceed to dance
dance();
}

public void followerEntered(){
//the calling followerthread will either block, waiting for
//leader or will proceed to dance
dance();
}

private void dance(){
System.out.println("doing dance");
}

}
这是Leader的代码

mutex.wait()
if followers > 0:
    followers--
    followerQueue.signal()
else:
leaders++
mutex.signal()
leaderQueue.wait()
dance()
rendezvous.wait()
mutex.signal()
下面是追随者的代码

mutex.wait()
if leaders> 0:
   leaders--
   leadersQueue.signal()
else:
followers++
mutex.signal()
followersQueue.wait()
dance()
rendezvous.wait()

我是如何继续下去的?

这听起来很像理发师睡觉的问题。试着看看这个:

您可以在此处阅读有关此问题的更多信息:

谢谢……但这不一样……因为在睡眠理发师问题中有一个问题。。在我的问题中有很多领导者。没问题,但我提供的链接实际上有一个“多理发师”解决方案。