对于作业,我必须在 Java 中创建一个计数信号量。到目前为止,我已经创建了这个裸骨类
public class Semaphore {
int value;
public Semaphore(int value) {
this.value = value;
}
public static void wait(Semaphore s) {
s.value--;
if (s.value < 0) {
// block
}
}
public static void signal(Semaphore s) {
s.value++;
if (s.value <= 0) {
// unblock one process that is blocked on semaphore
}
}
}
现在我感到困惑的是,我究竟如何在 wait() 上阻塞,相反,我如何在 signal() 上解除阻塞一个线程?我读到有一个阻塞的队列,但我会在哪里继续引用该队列?