使用信号量和监视器的 Java Unisex 浴室

标签 java concurrency semaphore monitor

我接到了一项并发编程任务,要为一个男女通用的厕所编写代码。对于这个主题来说,这似乎是一个足够常见的作业。对于那些不熟悉的人,已经制定了规则(至少在这种情况下)

  • 浴室可供男女使用,但不能同时使用。
  • 最多 5 人同时进入厕所。
  • 如果使用信号量,则必须自己实现。

在这门课之前我已经很久没有写代码了,我的知识已经生锈了。我最初只用计数器来编写代码,但在理解程序和那个版本的信息流时遇到了问题!

所以我重新开始,想知道我应该采取什么一般方式来解决这个问题。我最初的想法是有 1 个厕所,用二进制信号量实现,带有浴室监视器,限制为 5 个。

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

目前我没有代码可以展示,所以我最关心的是如何设置的大纲。

最佳答案

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

关于使用信号量和监视器的 Java Unisex 浴室,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12019254/

相关文章:

c - 在 C 中使用信号量实现虚拟程序

java - 当我们在消费者和生产者缓冲区中使用信号量时

java - 保存对象的属性

java - Excel 数据仅写入第一行 - java

c++ - 用 concurrent_vector 迭代器算术 : is it safe to assume that subtracting 'begin ()' from an iterator will give the index?

java - 当方法同步时,我们可以使用 StringBuilder 而不是 StringBuffer 吗?

concurrency - 如何实现 pop -> 做一些事情 -> 使用 goroutines 推送队列

java - 运行程序之前我需要满足的条件

java - 在日志系统中分离生命周期事件的适当方法是什么?

java - 如何组织信号量以将多个 java 进程写入一个文本文件