监控程序背后的逻辑

我目前正在尝试解决[本书]中发现的“男女通用浴室”问题,(http://greenteapress.com/semaphores/LittleBookOfSemaphores.pdf)限制是: - 如果浴室是空的,男性或女性都可以进入 - 如果浴室里有男性或女性,则只有相同性别可以进入 - 浴室里只能有两个人


让我困惑的是,虽然我对逻辑如何工作的概念有一些了解,但我不确定在哪里/如何实现这段代码。例如,我有一个名为“employee”的类,它扩展线程并可以设置一个变量来显示他们是男性还是女性。我还有一个“浴室”类,它还扩展了包含称为“正在使用”的信号量的线程,该信号量用于确定浴室是否已满。我试图实现书中找到的灯开关结构,我认为它只是一个监视器。我不明白这是如何锁定特定类型的线程的。


我的问题是,我在哪里存储信号量变量,以及访问它们以实现其余逻辑的最佳方法是什么?


编辑:当我提到灯开关时,我指的是第 70 页上的结构,而浴室问题位于第 170 页上。


浴室类包含:


  Semaphore being_used = new Semaphore(1);

员工类包含:


    private String id;

    private int time;

    private String type;

    private Boolean finished;

    private Bathroom b_room;


哔哔one
浏览 51回答 1
1回答

临摹微笑

不读这本书...信号量属于浴室:如果您有三个浴室和七个用户,那么您将拥有三个信号量,而不是一个,而不是七个。每当用户申请进入浴室时都应获取信号量许可证,并在向其发送退出消息或拒绝进入的用户进入时释放信号量许可证。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java