我目前正在尝试解决[本书]中发现的“男女通用浴室”问题,(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;
临摹微笑
相关分类